{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import json\n",
    "import os\n",
    "import numpy as np\n",
    "\n",
    "from tensorflow.keras.utils import Sequence\n",
    "import skimage\n",
    "from skimage.io import imread\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "import math\n",
    "\n",
    "IMAGE_SHAPE = (1280,720,3)\n",
    "N_LAYERS = 4\n",
    "N_CLASSES = 2\n",
    "TRAIN_SPLIT = 0.8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "       video_id  sequence  video_frame  sequence_frame image_id  \\\n16            0     40258           16              16     0-16   \n17            0     40258           17              17     0-17   \n18            0     40258           18              18     0-18   \n19            0     40258           19              19     0-19   \n20            0     40258           20              20     0-20   \n...         ...       ...          ...             ...      ...   \n23369         2     29859        10628            2856  2-10628   \n23370         2     29859        10629            2857  2-10629   \n23371         2     29859        10630            2858  2-10630   \n23372         2     29859        10631            2859  2-10631   \n23373         2     29859        10632            2860  2-10632   \n\n                                             annotations  \n16     [{'x': 559, 'y': 213, 'width': 50, 'height': 32}]  \n17     [{'x': 558, 'y': 213, 'width': 50, 'height': 32}]  \n18     [{'x': 557, 'y': 213, 'width': 50, 'height': 32}]  \n19     [{'x': 556, 'y': 214, 'width': 50, 'height': 32}]  \n20     [{'x': 555, 'y': 214, 'width': 50, 'height': 32}]  \n...                                                  ...  \n23369   [{'x': 92, 'y': 532, 'width': 40, 'height': 37}]  \n23370   [{'x': 78, 'y': 569, 'width': 40, 'height': 37}]  \n23371   [{'x': 65, 'y': 606, 'width': 41, 'height': 37}]  \n23372   [{'x': 51, 'y': 643, 'width': 44, 'height': 37}]  \n23373   [{'x': 38, 'y': 681, 'width': 46, 'height': 37}]  \n\n[4919 rows x 6 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>video_id</th>\n      <th>sequence</th>\n      <th>video_frame</th>\n      <th>sequence_frame</th>\n      <th>image_id</th>\n      <th>annotations</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>16</th>\n      <td>0</td>\n      <td>40258</td>\n      <td>16</td>\n      <td>16</td>\n      <td>0-16</td>\n      <td>[{'x': 559, 'y': 213, 'width': 50, 'height': 32}]</td>\n    </tr>\n    <tr>\n      <th>17</th>\n      <td>0</td>\n      <td>40258</td>\n      <td>17</td>\n      <td>17</td>\n      <td>0-17</td>\n      <td>[{'x': 558, 'y': 213, 'width': 50, 'height': 32}]</td>\n    </tr>\n    <tr>\n      <th>18</th>\n      <td>0</td>\n      <td>40258</td>\n      <td>18</td>\n      <td>18</td>\n      <td>0-18</td>\n      <td>[{'x': 557, 'y': 213, 'width': 50, 'height': 32}]</td>\n    </tr>\n    <tr>\n      <th>19</th>\n      <td>0</td>\n      <td>40258</td>\n      <td>19</td>\n      <td>19</td>\n      <td>0-19</td>\n      <td>[{'x': 556, 'y': 214, 'width': 50, 'height': 32}]</td>\n    </tr>\n    <tr>\n      <th>20</th>\n      <td>0</td>\n      <td>40258</td>\n      <td>20</td>\n      <td>20</td>\n      <td>0-20</td>\n      <td>[{'x': 555, 'y': 214, 'width': 50, 'height': 32}]</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>23369</th>\n      <td>2</td>\n      <td>29859</td>\n      <td>10628</td>\n      <td>2856</td>\n      <td>2-10628</td>\n      <td>[{'x': 92, 'y': 532, 'width': 40, 'height': 37}]</td>\n    </tr>\n    <tr>\n      <th>23370</th>\n      <td>2</td>\n      <td>29859</td>\n      <td>10629</td>\n      <td>2857</td>\n      <td>2-10629</td>\n      <td>[{'x': 78, 'y': 569, 'width': 40, 'height': 37}]</td>\n    </tr>\n    <tr>\n      <th>23371</th>\n      <td>2</td>\n      <td>29859</td>\n      <td>10630</td>\n      <td>2858</td>\n      <td>2-10630</td>\n      <td>[{'x': 65, 'y': 606, 'width': 41, 'height': 37}]</td>\n    </tr>\n    <tr>\n      <th>23372</th>\n      <td>2</td>\n      <td>29859</td>\n      <td>10631</td>\n      <td>2859</td>\n      <td>2-10631</td>\n      <td>[{'x': 51, 'y': 643, 'width': 44, 'height': 37}]</td>\n    </tr>\n    <tr>\n      <th>23373</th>\n      <td>2</td>\n      <td>29859</td>\n      <td>10632</td>\n      <td>2860</td>\n      <td>2-10632</td>\n      <td>[{'x': 38, 'y': 681, 'width': 46, 'height': 37}]</td>\n    </tr>\n  </tbody>\n</table>\n<p>4919 rows × 6 columns</p>\n</div>"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset_base = '/home/chengjialiang1/ml/dataset/Reef'\n",
    "\n",
    "train_csv = pd.read_csv(os.path.join(dataset_base,'train.csv'))\n",
    "train_csv = train_csv.query('annotations!=\"[]\"')\n",
    "train_csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "array([['0-16', '559', '213', '50', '32'],\n       ['0-17', '558', '213', '50', '32'],\n       ['0-18', '557', '213', '50', '32'],\n       ...,\n       ['2-10630', '65', '606', '41', '37'],\n       ['2-10631', '51', '643', '44', '37'],\n       ['2-10632', '38', '681', '46', '37']], dtype='<U7')"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "target = []\n",
    "image_base = os.path.join(dataset_base,'train_images')\n",
    "for i in range(train_csv.shape[0]):\n",
    "    item = train_csv.iloc[i]\n",
    "    annotation = item['annotations']\n",
    "    annotation = annotation.replace('\\'', '\\\"')\n",
    "    anno_list = json.loads(annotation)\n",
    "    image_id = item['image_id']\n",
    "\n",
    "    for anno in anno_list:\n",
    "       \n",
    "        target.append([image_id,anno['x'],anno['y'],anno['width'],anno['height']])\n",
    "target = np.array(target)\n",
    "target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "[('0-100', [array([276., 631., 116.,  88.], dtype=float32)]),\n ('0-1000', [array([932., 336.,  79.,  48.], dtype=float32)]),\n ('0-1001', [array([938., 339.,  81.,  50.], dtype=float32)]),\n ('0-1002', [array([945., 342.,  83.,  52.], dtype=float32)]),\n ('0-1003', [array([951., 345.,  85.,  54.], dtype=float32)]),\n ('0-1004', [array([958., 347.,  87.,  57.], dtype=float32)]),\n ('0-1005', [array([964., 350.,  89.,  59.], dtype=float32)]),\n ('0-1006', [array([971., 353.,  91.,  61.], dtype=float32)]),\n ('0-1007', [array([977., 356.,  93.,  63.], dtype=float32)]),\n ('0-1008', [array([984., 359.,  96.,  65.], dtype=float32)])]"
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keys = np.unique(target[:,0])\n",
    "dictionary = {}\n",
    "for key in keys:\n",
    "    dictionary[key] = [] # empty boxes\n",
    "\n",
    "for label in target:\n",
    "    if len(label) != 5:\n",
    "        print(\"Incomplete label:\", label[0])\n",
    "        continue\n",
    "\n",
    "    value = label[1:]\n",
    "\n",
    "    if value[0]==value[1]:\n",
    "        continue\n",
    "    if value[2]==value[3]:\n",
    "        continue\n",
    "\n",
    "    # box coords are float32\n",
    "    value = value.astype(np.float32)\n",
    "    # filename is key\n",
    "    key = label[0]\n",
    "    # boxes = bounding box coords and class label\n",
    "    boxes = dictionary[key]\n",
    "    boxes.append(value)\n",
    "    dictionary[key] = boxes\n",
    "\n",
    "# remove dataset entries w/o labels\n",
    "for key in keys:\n",
    "    if len(dictionary[key]) == 0:\n",
    "        del dictionary[key]\n",
    "\n",
    "list(dictionary.items())[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0015128593040847202\n",
      "17.0\n",
      "243.0\n",
      "13.0\n",
      "222.0\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 4 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "widths = target[:,3].astype(np.float32)\n",
    "heights = target[:,4].astype(np.float32)\n",
    "\n",
    "plt.subplot(221)\n",
    "sns.histplot(widths)\n",
    "plt.subplot(222)\n",
    "sns.histplot(heights)\n",
    "\n",
    "plt.subplot(223)\n",
    "sns.histplot(widths[(widths <= 150) & (heights <= 150)])\n",
    "plt.subplot(224)\n",
    "sns.histplot(heights[(widths <= 150) & (heights <= 150)])\n",
    "\n",
    "\n",
    "# 图片大小是1280x720\n",
    "print((widths[(widths > 150) | (heights > 150)]).shape[0] / widths.shape[0]) # 可以丢掉这些大的吗？\n",
    "\n",
    "print(np.min(widths))\n",
    "print(np.max(widths))\n",
    "print(np.min(heights))\n",
    "print(np.max(heights))\n",
    "\n",
    "# 比例可以从0.01开始到0.3,aspect可以是1,2,0.5，选取4层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "[[0.01, 0.02872281323269014],\n [0.08249999999999999, 0.11308182877898641],\n [0.155, 0.18778311958213922],\n [0.22749999999999998, 0.2612470095522626]]"
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def anchor_sizes(n_layers=4):\n",
    "    s = np.linspace(0.01, 0.3, n_layers + 1)\n",
    "    sizes = []\n",
    "    for i in range(len(s) - 1):\n",
    "        # size = [s[i], (s[i] * 0.5)]\n",
    "        size = [s[i], math.sqrt(s[i] * s[i + 1])]\n",
    "        sizes.append(size)\n",
    "\n",
    "    return sizes\n",
    "\n",
    "anchor_sizes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "(1, 22, 40, 4, 4)"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def centroid2minmax(boxes):\n",
    "    minmax = np.copy(boxes).astype(np.float)\n",
    "    minmax[..., 0] = boxes[..., 0] - (0.5 * boxes[..., 2])\n",
    "    minmax[..., 1] = boxes[..., 0] + (0.5 * boxes[..., 2])\n",
    "    minmax[..., 2] = boxes[..., 1] - (0.5 * boxes[..., 3])\n",
    "    minmax[..., 3] = boxes[..., 1] + (0.5 * boxes[..., 3])\n",
    "    return minmax\n",
    "\n",
    "\n",
    "def minmax2centroid(boxes):\n",
    "    centroid = np.copy(boxes).astype(np.float)\n",
    "    centroid[..., 0] = 0.5 * (boxes[..., 1] - boxes[..., 0])\n",
    "    centroid[..., 0] += boxes[..., 0]\n",
    "    centroid[..., 1] = 0.5 * (boxes[..., 3] - boxes[..., 2])\n",
    "    centroid[..., 1] += boxes[..., 2]\n",
    "    centroid[..., 2] = boxes[..., 1] - boxes[..., 0]\n",
    "    centroid[..., 3] = boxes[..., 3] - boxes[..., 2]\n",
    "    return centroid\n",
    "\n",
    "def anchor_boxes(feature_shape, image_shape, index=0, n_layers=4, aspect_ratios=(1, 2, 0.5)):\n",
    "    sizes = anchor_sizes(n_layers)[index]\n",
    "\n",
    "    n_boxes = len(aspect_ratios) + 1\n",
    "\n",
    "    image_height, image_width, _ = image_shape\n",
    "\n",
    "    feature_height, feature_width, _ = feature_shape\n",
    "\n",
    "    norm_height = image_height * sizes[0]\n",
    "    norm_width = image_width * sizes[0]\n",
    "\n",
    "    width_height = []\n",
    "\n",
    "    for ar in aspect_ratios:\n",
    "        box_width = norm_width * np.sqrt(ar)\n",
    "        box_height = norm_height / np.sqrt(ar)\n",
    "        width_height.append((box_width, box_height))\n",
    "\n",
    "    box_width = image_width * sizes[1]\n",
    "    box_height = image_height * sizes[1]\n",
    "    width_height.append((box_width, box_height))\n",
    "\n",
    "    width_height = np.array(width_height)\n",
    "\n",
    "    grid_width = image_width / feature_width\n",
    "    grid_height = image_height / feature_height\n",
    "\n",
    "    start = grid_width * 0.5\n",
    "    end = (feature_width - 0.5) * grid_width\n",
    "\n",
    "    cx = np.linspace(start, end, feature_width)\n",
    "\n",
    "    start = grid_height * 0.5\n",
    "    end = (feature_height - 0.5) * grid_height\n",
    "\n",
    "    cy = np.linspace(start, end, feature_height)\n",
    "\n",
    "    cx_grid, cy_grid = np.meshgrid(cx, cy)\n",
    "    # 由cx和cy生成坐标网格，cx_grid以cx为行向量重复，cy_grid重复列向量cy\n",
    "\n",
    "    cx_grid = np.expand_dims(cx_grid, -1)\n",
    "    cy_grid = np.expand_dims(cy_grid, -1)\n",
    "\n",
    "    centroid_boxes = np.zeros((feature_height, feature_width, n_boxes, 4))\n",
    "\n",
    "    centroid_boxes[..., 0] = np.tile(cx_grid, (1, 1, n_boxes))\n",
    "    centroid_boxes[..., 1] = np.tile(cy_grid, (1, 1, n_boxes))\n",
    "\n",
    "    centroid_boxes[..., 2] = width_height[:, 0]\n",
    "    centroid_boxes[..., 3] = width_height[:, 1]\n",
    "\n",
    "    centroid_boxes = centroid2minmax(centroid_boxes)\n",
    "    centroid_boxes = np.expand_dims(centroid_boxes, axis=0)\n",
    "\n",
    "    return centroid_boxes\n",
    "\n",
    "anchor_boxes((22,40,16),(720,1280,3)).shape\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "\n",
    "def intersection(boxes1, boxes2):\n",
    "    \"\"\"Compute intersection of batch of boxes1 and boxes2\n",
    "\n",
    "    Arguments:\n",
    "        boxes1 (tensor): Boxes coordinates in pixels\n",
    "        boxes2 (tensor): Boxes coordinates in pixels\n",
    "\n",
    "    Returns:\n",
    "        intersection_areas (tensor): intersection of areas of\n",
    "            boxes1 and boxes2\n",
    "    \"\"\"\n",
    "    m = boxes1.shape[0]  # The number of boxes in `boxes1`\n",
    "    n = boxes2.shape[0]  # The number of boxes in `boxes2`\n",
    "\n",
    "    xmin = 0\n",
    "    xmax = 1\n",
    "    ymin = 2\n",
    "    ymax = 3\n",
    "\n",
    "    boxes1_min = np.expand_dims(boxes1[:, [xmin, ymin]], axis=1)\n",
    "    boxes1_min = np.tile(boxes1_min, reps=(1, n, 1))\n",
    "    boxes2_min = np.expand_dims(boxes2[:, [xmin, ymin]], axis=0)\n",
    "    boxes2_min = np.tile(boxes2_min, reps=(m, 1, 1))\n",
    "    min_xy = np.maximum(boxes1_min, boxes2_min)\n",
    "\n",
    "    boxes1_max = np.expand_dims(boxes1[:, [xmax, ymax]], axis=1)\n",
    "    boxes1_max = np.tile(boxes1_max, reps=(1, n, 1))\n",
    "    boxes2_max = np.expand_dims(boxes2[:, [xmax, ymax]], axis=0)\n",
    "    boxes2_max = np.tile(boxes2_max, reps=(m, 1, 1))\n",
    "    max_xy = np.minimum(boxes1_max, boxes2_max)\n",
    "\n",
    "    side_lengths = np.maximum(0, max_xy - min_xy)\n",
    "\n",
    "    intersection_areas = side_lengths[:, :, 0] * side_lengths[:, :, 1]\n",
    "    return intersection_areas\n",
    "\n",
    "\n",
    "def union(boxes1, boxes2, intersection_areas):\n",
    "    \"\"\"Compute union of batch of boxes1 and boxes2\n",
    "\n",
    "    Arguments:\n",
    "        boxes1 (tensor): Boxes coordinates in pixels\n",
    "        boxes2 (tensor): Boxes coordinates in pixels\n",
    "\n",
    "    Returns:\n",
    "        union_areas (tensor): union of areas of\n",
    "            boxes1 and boxes2\n",
    "    \"\"\"\n",
    "    m = boxes1.shape[0]  # number of boxes in boxes1\n",
    "    n = boxes2.shape[0]  # number of boxes in boxes2\n",
    "\n",
    "    xmin = 0\n",
    "    xmax = 1\n",
    "    ymin = 2\n",
    "    ymax = 3\n",
    "\n",
    "    width = (boxes1[:, xmax] - boxes1[:, xmin])\n",
    "    height = (boxes1[:, ymax] - boxes1[:, ymin])\n",
    "    areas = width * height\n",
    "    boxes1_areas = np.tile(np.expand_dims(areas, axis=1), reps=(1, n))\n",
    "    width = (boxes2[:, xmax] - boxes2[:, xmin])\n",
    "    height = (boxes2[:, ymax] - boxes2[:, ymin])\n",
    "    areas = width * height\n",
    "    boxes2_areas = np.tile(np.expand_dims(areas, axis=0), reps=(m, 1))\n",
    "\n",
    "    union_areas = boxes1_areas + boxes2_areas - intersection_areas\n",
    "    return union_areas\n",
    "\n",
    "\n",
    "def iou(boxes1, boxes2):\n",
    "    \"\"\"Compute IoU of batch boxes1 and boxes2\n",
    "\n",
    "    Arguments:\n",
    "        boxes1 (tensor): Boxes coordinates in pixels\n",
    "        boxes2 (tensor): Boxes coordinates in pixels\n",
    "\n",
    "    Returns:\n",
    "        iou (tensor): intersectiin of union of areas of\n",
    "            boxes1 and boxes2\n",
    "    \"\"\"\n",
    "    intersection_areas = intersection(boxes1, boxes2)\n",
    "    union_areas = union(boxes1, boxes2, intersection_areas)\n",
    "    return intersection_areas / union_areas\n",
    "\n",
    "\n",
    "def get_gt_data(iou, n_classes=2, anchors=None, labels=None, normalize=None,\n",
    "                threshold=0.6):\n",
    "    maxiou_per_gt = np.argmax(iou, axis=0)\n",
    "    if threshold < 1.0:\n",
    "        iou_gt_thresh = np.argwhere(iou > threshold)\n",
    "\n",
    "        if iou_gt_thresh.size > 0:\n",
    "            extra_anchors = iou_gt_thresh[:, 0]\n",
    "            extra_classes = iou_gt_thresh[:, 1]\n",
    "\n",
    "            extra_labels = labels[extra_classes]\n",
    "\n",
    "            indexes = [maxiou_per_gt, extra_anchors]\n",
    "            maxiou_per_gt = np.concatenate(indexes, axis=0)\n",
    "            labels = np.concatenate([labels, extra_labels], axis=0)\n",
    "    gt_mask = np.zeros((iou.shape[0], 4))\n",
    "    gt_mask[maxiou_per_gt] = 1.0\n",
    "\n",
    "    gt_class = np.zeros((iou.shape[0], n_classes))\n",
    "\n",
    "    gt_class[:, 0] = 1 # 默认都是背景，0为背景\n",
    "    gt_class[maxiou_per_gt, 0] = 0\n",
    "    maxiou_col = np.reshape(maxiou_per_gt, (maxiou_per_gt.shape[0], 1))\n",
    "    label_col = np.reshape(labels[:, 4], (labels.shape[0], 1)).astype(int)\n",
    "\n",
    "    row_col = np.append(maxiou_col, label_col, axis=1)\n",
    "\n",
    "    gt_class[row_col[:, 0], row_col[:, 1]] = 1.0\n",
    "\n",
    "    gt_offset = np.zeros((iou.shape[0], 4))\n",
    "\n",
    "    if normalize:\n",
    "        anchors = minmax2centroid(anchors)\n",
    "        labels = minmax2centroid(labels)\n",
    "\n",
    "        offsets1 = labels[:, 0:2] - anchors[maxiou_per_gt, 0:2]\n",
    "        offsets1 /= anchors[maxiou_per_gt, 2:4]\n",
    "        offsets1 /= 0.1\n",
    "\n",
    "        offsets2 = np.log(labels[:, 2:4]/anchors[maxiou_per_gt, 2:4])\n",
    "        offsets2 /= 0.2\n",
    "\n",
    "        offsets = np.concatenate([offsets1, offsets2], axis=-1)\n",
    "\n",
    "    else:\n",
    "        offsets = labels[:, 0:4] - anchors[maxiou_per_gt]\n",
    "\n",
    "    gt_offset[maxiou_per_gt] = offsets\n",
    "    return gt_class, gt_offset, gt_mask\n",
    "\n",
    "class DataGenerator(Sequence):\n",
    "    def __init__(self, image_shape,batch_size, dictionary,layers, n_classes,feature_shapes,\n",
    "                 n_anchors,shuffle) -> None:\n",
    "        super().__init__()\n",
    "        self.dictionary = dictionary\n",
    "        self.n_classes = n_classes\n",
    "        self.feature_shapes = feature_shapes\n",
    "        self.n_anchors = n_anchors\n",
    "        self.shuffle = shuffle\n",
    "        self.batch_size = batch_size\n",
    "        self.layers = layers\n",
    "\n",
    "        self.keys = np.array(list(self.dictionary.keys()))\n",
    "        self.input_shape = image_shape\n",
    "\n",
    "        self.on_epoch_end()\n",
    "        self.get_n_boxes()\n",
    "\n",
    "    def on_epoch_end(self):\n",
    "        if self.shuffle == True:\n",
    "            np.random.shuffle(self.keys)\n",
    "\n",
    "    def __len__(self):\n",
    "        blen = np.floor(len(self.dictionary)/self.args.batch_size)\n",
    "        return int(blen)\n",
    "\n",
    "    def __getitem__(self, index):\n",
    "        start_index = index * self.batch_size\n",
    "        end_index = (index + 1) * self.batch_size\n",
    "        keys = self.keys[start_index:end_index]\n",
    "        x, y = self.__data_generation(keys)\n",
    "        return x, y\n",
    "\n",
    "    def get_n_boxes(self):\n",
    "        self.n_boxes = 0\n",
    "        for shape in self.feature_shapes:\n",
    "            self.n_boxes += np.prod(shape)//self.n_anchors\n",
    "        return self.n_boxes\n",
    "\n",
    "    def __data_generation(self, keys):\n",
    "        x = np.zeros((self.batch_size, *self.input_shape))\n",
    "        dim = (self.batch_size, self.n_boxes, self.n_classes)\n",
    "        gt_class = np.zeros(dim)\n",
    "        dim = (self.batch_size, self.n_boxes, 4)\n",
    "        gt_offset = np.zeros(dim)\n",
    "        gt_mask = np.zeros(dim)\n",
    "\n",
    "        for i, key in enumerate(keys):\n",
    "            video_id,pic_id = key.split('-')\n",
    "            image_path = os.path.join(dataset_base, 'train_images','video_' +\n",
    "                                      video_id,pic_id + '.jpg')\n",
    "            image = skimage.img_as_float(imread(image_path))\n",
    "            x[i] = image\n",
    "\n",
    "            labels = self.dictionary[key]\n",
    "            labels = np.array(labels)\n",
    "\n",
    "            boxes = labels[:, 0:-1]\n",
    "            for index, feature_shape in enumerate(self.feature_shapes):\n",
    "                anchors = anchor_boxes(\n",
    "                    feature_shape, image.shape, index, self.layers)\n",
    "                anchors = np.reshape(anchors, [-1, 4])\n",
    "                iou_value = iou(anchors, boxes)\n",
    "\n",
    "                gt = get_gt_data(iou_value, self.n_classes, anchors,\n",
    "                                 labels, self.args.normalize, self.args.threshold)\n",
    "\n",
    "                gt_cls, gt_off, gt_msk = gt\n",
    "\n",
    "                if index == 0:\n",
    "                    cls = np.array(gt_cls)\n",
    "                    off = np.array(gt_off)\n",
    "                    msk = np.array(gt_msk)\n",
    "                else:\n",
    "                    cls = np.append(cls, gt_cls, axis=0)\n",
    "                    off = np.append(off, gt_off, axis=0)\n",
    "                    msk = np.append(msk, gt_msk, axis=0)\n",
    "            gt_class[i] = cls\n",
    "            gt_offset[i] = off\n",
    "            gt_mask[i] = msk\n",
    "\n",
    "        y = [gt_class, np.concatenate((gt_offset, gt_mask), axis=-1)]\n",
    "\n",
    "        return x, y"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "%%time\n",
    "import tensorflow.keras.backend as K\n",
    "from tensorflow.keras.layers import (Activation, BatchNormalization, Conv2D,\n",
    "                                     Input,\n",
    "                                     Reshape, Concatenate, ELU, MaxPooling2D)\n",
    "from tensorflow.keras.models import Model\n",
    "from keras.applications.resnet import ResNet50\n",
    "\n",
    "\n",
    "def conv2d(inputs,\n",
    "           filters=32,\n",
    "           kernel_size=3,\n",
    "           strides=1,\n",
    "           name=None):\n",
    "    conv = Conv2D(filters=filters,\n",
    "                  kernel_size=kernel_size,\n",
    "                  strides=strides,\n",
    "                  kernel_initializer='he_normal',\n",
    "                  name=name,\n",
    "                  padding='same')\n",
    "\n",
    "    return conv(inputs)\n",
    "\n",
    "def conv_layer(inputs,\n",
    "               filters=32,\n",
    "               kernel_size=3,\n",
    "               strides=1,\n",
    "               use_maxpool=True,\n",
    "               postfix=None,\n",
    "               activation=None):\n",
    "    x = conv2d(inputs,\n",
    "               filters=filters,\n",
    "               kernel_size=kernel_size,\n",
    "               strides=strides,\n",
    "               name='conv' + postfix)\n",
    "    x = BatchNormalization(name=\"bn\" + postfix)(x)\n",
    "    x = ELU(name='elu' + postfix)(x)\n",
    "    if use_maxpool:\n",
    "        x = MaxPooling2D(name='pool' + postfix)(x)\n",
    "    return x\n",
    "\n",
    "def build_ssd(input_shape, backbone, n_layers, n_classes,\n",
    "              aspect_ratios=(1, 2, 0.5)):\n",
    "    n_anchors = len(aspect_ratios) + 1\n",
    "\n",
    "    inputs = Input(input_shape)\n",
    "    outputs = []\n",
    "    feature_shapes = []\n",
    "    out_cls = []\n",
    "    out_off = []\n",
    "\n",
    "    base_outputs = backbone(inputs)\n",
    "\n",
    "    for i in range(n_layers):\n",
    "        conv = base_outputs if n_layers == 1 else base_outputs[i]\n",
    "        name = \"cls\" + str(i + 1)\n",
    "        classes = conv2d(conv, n_anchors * n_classes, kernel_size=3, name=name)\n",
    "\n",
    "        name = \"off\" + str(i + 1)\n",
    "        offsets = conv2d(conv, n_anchors * 4, kernel_size=3, name=name)\n",
    "\n",
    "        shape = np.array(K.int_shape(offsets))[1:]\n",
    "        feature_shapes.append(shape)\n",
    "\n",
    "        name = \"cls_res\" + str(i + 1)\n",
    "        classes = Reshape((-1, n_classes), name=name)(classes)\n",
    "\n",
    "        name = \"off_res\" + str(i + 1)\n",
    "        offsets = Reshape((-1, 4), name=name)(offsets)\n",
    "\n",
    "        offsets = [offsets, offsets]\n",
    "        name = \"off_cat\" + str(i + 1)\n",
    "        offsets = Concatenate(axis=-1, name=name)(offsets)\n",
    "\n",
    "        out_off.append(offsets)\n",
    "\n",
    "        name = \"cls_out\" + str(i + 1)\n",
    "\n",
    "        classes = Activation('softmax', name=name)(classes)\n",
    "\n",
    "        out_cls.append(classes)\n",
    "\n",
    "    if n_layers > 1:\n",
    "        name = \"offsets\"\n",
    "        offsets = Concatenate(axis=1, name=name)(out_off)\n",
    "        name = \"classes\"\n",
    "        classes = Concatenate(axis=1, name=name)(out_cls)\n",
    "\n",
    "    else:\n",
    "        offsets = out_off[0]\n",
    "        classes = out_cls[0]\n",
    "\n",
    "    outputs = [classes, offsets]\n",
    "\n",
    "    model = Model(inputs=inputs, outputs=outputs, name='sdd_head')\n",
    "\n",
    "    return n_anchors, feature_shapes, model\n",
    "\n",
    "\n",
    "def build_backbone(input_shape,\n",
    "                   n_layers=4):\n",
    "    inputs = Input(shape=input_shape)\n",
    "\n",
    "    features = ResNet50(include_top=False)(inputs)\n",
    "\n",
    "    outputs = [features]\n",
    "\n",
    "    n_filters = 64\n",
    "    prev_conv = features\n",
    "    for i in range(n_layers - 1):\n",
    "        postfix = \"_layer\" + str(i+2)\n",
    "        conv = conv_layer(prev_conv,\n",
    "                          n_filters,\n",
    "                          kernel_size=3,\n",
    "                          strides=2,\n",
    "                          use_maxpool=False,\n",
    "                          postfix=postfix)\n",
    "        outputs.append(conv)\n",
    "        prev_conv = conv\n",
    "        n_filters *= 2\n",
    "\n",
    "    # instantiate model\n",
    "    model = Model(inputs=inputs,\n",
    "                  outputs=outputs,\n",
    "                  name='ssd_resnet50_pretrained')\n",
    "    return model"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "{'1-9364': [array([517., 441.,  73.,  51.], dtype=float32),\n  array([532., 358.,  51.,  46.], dtype=float32)],\n '0-9897': [array([844., 656.,  36.,  39.], dtype=float32),\n  array([751., 250.,  35.,  40.], dtype=float32)],\n '0-982': [array([838., 248.,  55.,  38.], dtype=float32)],\n '1-9369': [array([514., 516.,  72.,  53.], dtype=float32),\n  array([525., 418.,  58.,  57.], dtype=float32)],\n '1-623': [array([577., 285., 204., 174.], dtype=float32)],\n '0-12228': [array([172., 489.,  46.,  43.], dtype=float32),\n  array([446., 545.,  32.,  25.], dtype=float32)],\n '0-275': [array([1052.,  484.,   44.,   46.], dtype=float32)],\n '1-841': [array([1005.,   63.,   77.,   71.], dtype=float32)],\n '0-880': [array([719., 649.,  50.,  39.], dtype=float32)],\n '0-8214': [array([658., 194.,  28.,  25.], dtype=float32)],\n '0-9853': [array([772., 457.,  30.,  26.], dtype=float32),\n  array([714., 185.,  37.,  34.], dtype=float32)],\n '1-9527': [array([411., 683.,  32.,  31.], dtype=float32)],\n '1-5807': [array([316.,  53.,  27.,  31.], dtype=float32)],\n '0-9857': [array([786., 459.,  30.,  27.], dtype=float32),\n  array([725., 181.,  37.,  34.], dtype=float32)],\n '0-33': [array([519., 160.,  74.,  58.], dtype=float32)],\n '0-4477': [array([158., 243.,  44.,  19.], dtype=float32)],\n '0-9459': [array([349., 510.,  57.,  32.], dtype=float32)],\n '2-5513': [array([190., 680.,  43.,  39.], dtype=float32)],\n '0-9673': [array([309., 683.,  33.,  34.], dtype=float32),\n  array([150., 357.,  61.,  60.], dtype=float32),\n  array([148., 309.,  44.,  43.], dtype=float32),\n  array([ 10., 196.,  61.,  51.], dtype=float32),\n  array([850., 326.,  35.,  33.], dtype=float32)],\n '2-5693': [array([288.,  99.,  36.,  33.], dtype=float32),\n  array([245., 114.,  36.,  34.], dtype=float32)],\n '1-6883': [array([519., 523.,  71.,  68.], dtype=float32),\n  array([620., 373.,  55.,  51.], dtype=float32),\n  array([676., 306.,  57.,  50.], dtype=float32)],\n '0-11871': [array([870.,   5.,  49.,  42.], dtype=float32)],\n '0-9885': [array([836., 554.,  35.,  33.], dtype=float32),\n  array([755., 186.,  35.,  40.], dtype=float32)],\n '1-5277': [array([531., 205.,  63.,  51.], dtype=float32)],\n '0-8958': [array([1032.,  542.,   36.,   32.], dtype=float32),\n  array([1104.,  608.,   28.,   33.], dtype=float32)],\n '1-5236': [array([696., 425.,  64.,  77.], dtype=float32)],\n '0-12224': [array([196., 461.,  44.,  41.], dtype=float32),\n  array([460., 517.,  32.,  25.], dtype=float32)],\n '1-9074': [array([525., 625.,  67.,  72.], dtype=float32),\n  array([608.,  71.,  34.,  27.], dtype=float32),\n  array([828., 193.,  47.,  42.], dtype=float32),\n  array([716., 317.,  36.,  32.], dtype=float32),\n  array([610., 340.,  50.,  41.], dtype=float32)],\n '1-5921': [array([  0., 183.,  51.,  62.], dtype=float32)],\n '1-5415': [array([412., 549.,  40.,  38.], dtype=float32),\n  array([298., 407.,  32.,  36.], dtype=float32),\n  array([305., 543.,  41.,  30.], dtype=float32),\n  array([311., 504.,  32.,  41.], dtype=float32),\n  array([321., 643.,  51.,  64.], dtype=float32),\n  array([207., 686.,  51.,  34.], dtype=float32),\n  array([672., 157.,  38.,  45.], dtype=float32)],\n '2-5942': [array([235., 450.,  28.,  29.], dtype=float32),\n  array([261., 466.,  29.,  32.], dtype=float32)],\n '0-1541': [array([232., 378.,  34.,  26.], dtype=float32)],\n '1-4074': [array([ 68., 429.,  44.,  38.], dtype=float32)],\n '0-8963': [array([1055.,  612.,   36.,   32.], dtype=float32)],\n '0-397': [array([1023.,  650.,   50.,   55.], dtype=float32)],\n '1-9104': [array([493., 691.,  30.,  28.], dtype=float32),\n  array([636., 210.,  40.,  39.], dtype=float32),\n  array([892., 375.,  55.,  47.], dtype=float32),\n  array([848., 301.,  49.,  44.], dtype=float32),\n  array([746., 523.,  57.,  55.], dtype=float32),\n  array([627., 535.,  57.,  55.], dtype=float32),\n  array([688.,  59.,  38.,  39.], dtype=float32),\n  array([829.,  52.,  56.,  50.], dtype=float32),\n  array([548.,  48.,  26.,  25.], dtype=float32),\n  array([686., 589.,  45.,  47.], dtype=float32),\n  array([654., 605.,  58.,  59.], dtype=float32),\n  array([427., 210.,  27.,  26.], dtype=float32),\n  array([657., 237.,  27.,  42.], dtype=float32),\n  array([210., 672.,  41.,  38.], dtype=float32),\n  array([1098.,  521.,   52.,   42.], dtype=float32),\n  array([1113.,  507.,   57.,   32.], dtype=float32)],\n '1-5529': [array([183., 593.,  77.,  80.], dtype=float32),\n  array([281., 563.,  51.,  57.], dtype=float32)],\n '0-4587': [array([108., 128.,  56.,  53.], dtype=float32),\n  array([ 23., 151.,  73.,  58.], dtype=float32),\n  array([472., 260.,  47.,  53.], dtype=float32),\n  array([163.,  57.,  65.,  34.], dtype=float32)],\n '0-9387': [array([569., 393.,  83.,  67.], dtype=float32)],\n '1-1923': [array([935., 503.,  31.,  32.], dtype=float32)],\n '1-9347': [array([580., 289.,  70.,  48.], dtype=float32),\n  array([591., 219.,  45.,  40.], dtype=float32)],\n '0-8960': [array([1042.,  568.,   36.,   32.], dtype=float32),\n  array([1115.,  636.,   31.,   33.], dtype=float32)],\n '1-2009': [array([829., 275.,  49.,  59.], dtype=float32)],\n '1-3943': [array([445., 301.,  39.,  63.], dtype=float32)],\n '1-9213': [array([303., 516.,  39.,  36.], dtype=float32),\n  array([258., 672.,  52.,  47.], dtype=float32),\n  array([210., 436.,  38.,  31.], dtype=float32),\n  array([204., 266.,  52.,  42.], dtype=float32),\n  array([378., 341.,  28.,  25.], dtype=float32),\n  array([208., 516.,  30.,  27.], dtype=float32)],\n '0-9931': [array([775., 588.,  40.,  55.], dtype=float32)],\n '2-5895': [array([753., 629.,  30.,  26.], dtype=float32),\n  array([590., 392.,  37.,  34.], dtype=float32),\n  array([592., 427.,  31.,  34.], dtype=float32),\n  array([569., 414.,  31.,  30.], dtype=float32),\n  array([379., 204.,  24.,  20.], dtype=float32),\n  array([400., 206.,  22.,  23.], dtype=float32)],\n '0-4792': [array([  8., 510., 136.,  97.], dtype=float32)],\n '0-9378': [array([620., 612.,  77.,  70.], dtype=float32),\n  array([591., 292.,  77.,  57.], dtype=float32)],\n '0-4879': [array([187., 671.,  87.,  46.], dtype=float32)],\n '0-8957': [array([1027.,  529.,   36.,   32.], dtype=float32),\n  array([1098.,  593.,   27.,   33.], dtype=float32)],\n '0-9273': [array([1045.,  386.,   46.,   47.], dtype=float32)],\n '0-2284': [array([571., 248.,  34.,  32.], dtype=float32)],\n '1-3920': [array([102., 288.,  65.,  43.], dtype=float32),\n  array([ 45., 338.,  73.,  51.], dtype=float32),\n  array([ 71., 320.,  33.,  25.], dtype=float32),\n  array([495., 223.,  29.,  43.], dtype=float32)],\n '0-117': [array([655.,   3.,  26.,  27.], dtype=float32)],\n '1-4447': [array([647., 269.,  32.,  42.], dtype=float32)],\n '2-6253': [array([512., 242.,  36.,  37.], dtype=float32),\n  array([487., 262.,  33.,  32.], dtype=float32),\n  array([462., 284.,  37.,  35.], dtype=float32)],\n '0-1562': [array([  9., 520.,  51.,  33.], dtype=float32)],\n '2-5834': [array([1009.,  398.,   71.,   52.], dtype=float32),\n  array([1244.,  479.,   35.,   71.], dtype=float32),\n  array([749.,  57.,  50.,  34.], dtype=float32),\n  array([173., 658.,  89.,  61.], dtype=float32),\n  array([455., 520.,  65.,  81.], dtype=float32),\n  array([ 80., 668.,  68.,  51.], dtype=float32)],\n '0-9698': [array([  0., 642.,  81.,  77.], dtype=float32),\n  array([  1., 578.,  50.,  58.], dtype=float32),\n  array([509., 156.,  37.,  32.], dtype=float32),\n  array([935., 569.,  41.,  48.], dtype=float32)],\n '0-9622': [array([343., 375.,  19.,  16.], dtype=float32),\n  array([227., 253.,  40.,  31.], dtype=float32)],\n '0-1007': [array([977., 356.,  93.,  63.], dtype=float32)],\n '0-4627': [array([  0., 359.,  85.,  72.], dtype=float32)],\n '2-5676': [array([354., 159.,  34.,  31.], dtype=float32),\n  array([316., 176.,  26.,  21.], dtype=float32)],\n '1-478': [array([867., 516.,  28.,  36.], dtype=float32)],\n '0-75': [array([421., 217.,  59.,  58.], dtype=float32)],\n '0-23': [array([535., 207.,  58.,  48.], dtype=float32)],\n '0-1860': [array([304., 383.,  38.,  21.], dtype=float32)],\n '1-9324': [array([609., 568.,  41.,  46.], dtype=float32),\n  array([286., 614.,  56.,  40.], dtype=float32)],\n '1-5452': [array([452.,   9.,  46.,  40.], dtype=float32),\n  array([287., 254.,  38.,  42.], dtype=float32),\n  array([395.,  30.,  38.,  35.], dtype=float32),\n  array([479., 563.,  53.,  58.], dtype=float32)],\n '0-5047': [array([560., 571., 109.,  82.], dtype=float32)],\n '0-9274': [array([1049.,  395.,   47.,   48.], dtype=float32)],\n '2-5770': [array([618., 391.,  61.,  54.], dtype=float32),\n  array([632., 522.,  60.,  48.], dtype=float32),\n  array([727., 530.,  70.,  60.], dtype=float32),\n  array([1008.,  185.,   53.,   48.], dtype=float32),\n  array([1157.,   91.,   66.,   62.], dtype=float32),\n  array([1090.,  218.,   75.,   58.], dtype=float32),\n  array([472., 548.,  58.,  55.], dtype=float32),\n  array([521., 559.,  49.,  37.], dtype=float32),\n  array([899., 211.,  63.,  58.], dtype=float32),\n  array([332., 302.,  62.,  55.], dtype=float32),\n  array([1243.,  554.,   36.,   77.], dtype=float32),\n  array([1037.,  462.,   68.,   58.], dtype=float32),\n  array([755., 653.,  62.,  37.], dtype=float32),\n  array([443.,  11.,  51.,  38.], dtype=float32),\n  array([393.,  14.,  41.,  24.], dtype=float32),\n  array([727., 622.,  70.,  56.], dtype=float32)],\n '0-5038': [array([562., 409.,  90.,  70.], dtype=float32)],\n '0-9546': [array([718., 543.,  40.,  31.], dtype=float32)],\n '2-5880': [array([770., 408.,  30.,  26.], dtype=float32),\n  array([733., 472.,  58.,  49.], dtype=float32),\n  array([622., 247.,  33.,  23.], dtype=float32),\n  array([623., 271.,  27.,  32.], dtype=float32)],\n '1-8881': [array([662., 584.,  45.,  49.], dtype=float32),\n  array([416., 368.,  30.,  24.], dtype=float32)],\n '0-9434': [array([828., 443.,  33.,  40.], dtype=float32)],\n '1-4233': [array([334., 360.,  38.,  35.], dtype=float32),\n  array([532., 417.,  38.,  48.], dtype=float32)],\n '1-3926': [array([ 51., 258.,  67.,  44.], dtype=float32),\n  array([  1., 319.,  67.,  50.], dtype=float32),\n  array([ 17., 298.,  33.,  25.], dtype=float32),\n  array([479., 185.,  30.,  45.], dtype=float32)],\n '0-11916': [array([1057.,  421.,   71.,   77.], dtype=float32)],\n '0-1892': [array([785., 117.,  62.,  47.], dtype=float32),\n  array([477., 221.,  41.,  31.], dtype=float32)],\n '0-9531': [array([  0., 331.,  54.,  53.], dtype=float32)],\n '0-9376': [array([626., 572.,  77.,  70.], dtype=float32),\n  array([598., 271.,  76.,  54.], dtype=float32)],\n '1-8640': [array([313.,  80.,  28.,  21.], dtype=float32)],\n '1-9323': [array([613., 553.,  41.,  46.], dtype=float32),\n  array([295., 598.,  56.,  40.], dtype=float32),\n  array([332., 692.,  47.,  27.], dtype=float32)],\n '0-4695': [array([532., 301.,  39.,  38.], dtype=float32)],\n '1-6845': [array([495., 501.,  59.,  60.], dtype=float32),\n  array([601., 353.,  61.,  55.], dtype=float32),\n  array([662., 293.,  57.,  50.], dtype=float32)],\n '1-5548': [array([292., 645.,  47.,  67.], dtype=float32)],\n '1-9050': [array([417., 477.,  53.,  49.], dtype=float32)],\n '1-8912': [array([854., 386.,  45.,  48.], dtype=float32),\n  array([392., 614.,  29.,  38.], dtype=float32)],\n '1-4094': [array([508.,  24.,  21.,  20.], dtype=float32)],\n '0-11894': [array([965., 160.,  70.,  63.], dtype=float32)],\n '0-1022': [array([1094.,  507.,  109.,   85.], dtype=float32)],\n '0-4519': [array([ 56., 616.,  78.,  58.], dtype=float32)],\n '0-9833': [array([703., 447.,  30.,  25.], dtype=float32)],\n '0-973': [array([807., 195.,  46.,  33.], dtype=float32)],\n '0-9245': [array([1003.,  336.,   40.,   32.], dtype=float32)],\n '0-2291': [array([550., 289.,  37.,  32.], dtype=float32)],\n '1-9176': [array([455., 322.,  45.,  40.], dtype=float32),\n  array([183., 643.,  82.,  62.], dtype=float32),\n  array([160., 470.,  57.,  48.], dtype=float32),\n  array([ 84., 500.,  42.,  41.], dtype=float32),\n  array([342., 221.,  26.,  25.], dtype=float32),\n  array([335., 111.,  40.,  26.], dtype=float32)],\n '1-9520': [array([392., 608.,  32.,  31.], dtype=float32)],\n '1-5432': [array([177., 585.,  36.,  46.], dtype=float32),\n  array([178., 697.,  44.,  22.], dtype=float32),\n  array([415., 167.,  35.,  30.], dtype=float32),\n  array([206., 598.,  26.,  34.], dtype=float32),\n  array([603., 364.,  46.,  55.], dtype=float32)],\n '1-6235': [array([566.,  38.,  58.,  59.], dtype=float32)],\n '1-4067': [array([123., 282.,  44.,  34.], dtype=float32)],\n '1-5912': [array([  7., 458.,  40.,  59.], dtype=float32),\n  array([  0., 516.,  28.,  45.], dtype=float32)],\n '2-6378': [array([133., 281.,  33.,  29.], dtype=float32)],\n '0-386': [array([1036.,  445.,   40.,   53.], dtype=float32)],\n '0-8229': [array([676., 235.,  32.,  29.], dtype=float32),\n  array([875., 650.,  25.,  37.], dtype=float32)],\n '0-9320': [array([825.,  37.,  37.,  33.], dtype=float32)],\n '0-9524': [array([ 16., 298.,  66.,  42.], dtype=float32)],\n '0-4266': [array([577., 286.,  56.,  47.], dtype=float32)],\n '0-4766': [array([121., 185.,  91.,  41.], dtype=float32),\n  array([ 38., 395.,  82.,  79.], dtype=float32)],\n '1-5472': [array([394., 127.,  43.,  35.], dtype=float32),\n  array([203., 431.,  56.,  66.], dtype=float32),\n  array([326., 153.,  43.,  39.], dtype=float32),\n  array([319., 145.,  30.,  24.], dtype=float32),\n  array([424.,  60.,  38.,  31.], dtype=float32),\n  array([764., 463.,  78.,  60.], dtype=float32)],\n '0-11918': [array([1061.,  456.,   72.,   81.], dtype=float32)],\n '0-5033': [array([564., 358.,  84.,  64.], dtype=float32)],\n '1-4459': [array([670., 250.,  32.,  42.], dtype=float32)],\n '0-4565': [array([175.,  85.,  50.,  43.], dtype=float32),\n  array([112., 106.,  56.,  40.], dtype=float32),\n  array([466., 194.,  35.,  29.], dtype=float32),\n  array([225.,  37.,  46.,  29.], dtype=float32)],\n '2-5418': [array([187., 406.,  49.,  47.], dtype=float32)],\n '0-5014': [array([569., 177.,  59.,  47.], dtype=float32)],\n '1-8882': [array([655., 603.,  45.,  49.], dtype=float32),\n  array([410., 376.,  30.,  24.], dtype=float32)],\n '0-4588': [array([104., 131.,  56.,  53.], dtype=float32),\n  array([ 20., 155.,  73.,  58.], dtype=float32),\n  array([473., 263.,  48.,  55.], dtype=float32),\n  array([160.,  58.,  65.,  34.], dtype=float32)],\n '1-4760': [array([133., 108.,  43.,  40.], dtype=float32)],\n '0-9647': [array([308., 548.,  23.,  26.], dtype=float32),\n  array([176., 346.,  51.,  43.], dtype=float32),\n  array([183., 304.,  39.,  31.], dtype=float32),\n  array([ 74., 216.,  58.,  50.], dtype=float32)],\n '1-8917': [array([859., 432.,  45.,  48.], dtype=float32),\n  array([385., 659.,  28.,  39.], dtype=float32)],\n '1-8663': [array([204., 100.,  25.,  29.], dtype=float32)],\n '0-12287': [array([860., 421.,  31.,  25.], dtype=float32)],\n '0-9437': [array([827., 468.,  33.,  40.], dtype=float32)],\n '2-5947': [array([228., 461.,  28.,  29.], dtype=float32),\n  array([254., 480.,  29.,  32.], dtype=float32)],\n '1-4167': [array([384., 550.,  26.,  25.], dtype=float32),\n  array([638., 241.,  39.,  44.], dtype=float32),\n  array([700., 323.,  41.,  40.], dtype=float32),\n  array([302., 253.,  30.,  25.], dtype=float32),\n  array([751., 369.,  63.,  67.], dtype=float32),\n  array([274., 325.,  54.,  38.], dtype=float32),\n  array([791., 356.,  34.,  54.], dtype=float32),\n  array([171., 432.,  30.,  37.], dtype=float32),\n  array([202., 477.,  29.,  34.], dtype=float32),\n  array([662., 558.,  33.,  32.], dtype=float32)],\n '2-4730': [array([114., 511.,  45.,  48.], dtype=float32)],\n '2-5479': [array([350., 379.,  34.,  35.], dtype=float32)],\n '1-8799': [array([564.,  51.,  29.,  27.], dtype=float32)],\n '0-9846': [array([749., 455.,  30.,  25.], dtype=float32)],\n '2-5438': [array([192., 338.,  49.,  47.], dtype=float32)],\n '0-9896': [array([844., 646.,  36.,  38.], dtype=float32),\n  array([751., 243.,  35.,  40.], dtype=float32)],\n '1-8919': [array([874., 471.,  48.,  51.], dtype=float32),\n  array([388., 688.,  27.,  32.], dtype=float32)],\n '1-2017': [array([800., 386.,  49.,  59.], dtype=float32)],\n '2-10623': [array([109., 377.,  40.,  26.], dtype=float32)],\n '1-9055': [array([422., 500.,  61.,  51.], dtype=float32)],\n '2-5396': [array([191., 127.,  35.,  43.], dtype=float32)],\n '1-5685': [array([969., 274.,  42.,  32.], dtype=float32),\n  array([923., 261.,  36.,  34.], dtype=float32),\n  array([750., 382.,  44.,  37.], dtype=float32),\n  array([497., 482.,  38.,  27.], dtype=float32)],\n '1-835': [array([970.,   0.,  77.,  71.], dtype=float32)],\n '1-4445': [array([647., 211.,  32.,  42.], dtype=float32)],\n '0-156': [array([624., 269.,  49.,  53.], dtype=float32)],\n '0-4681': [array([593., 234.,  30.,  27.], dtype=float32)],\n '1-8828': [array([555., 176.,  51.,  50.], dtype=float32),\n  array([707., 212.,  45.,  37.], dtype=float32)],\n '1-8928': [array([916., 638.,  52.,  56.], dtype=float32)],\n '1-9026': [array([408., 231.,  44.,  29.], dtype=float32)],\n '1-5327': [array([356., 137.,  42.,  46.], dtype=float32),\n  array([257., 235.,  38.,  34.], dtype=float32)],\n '1-8849': [array([510., 355.,  66.,  63.], dtype=float32),\n  array([700., 407.,  55.,  51.], dtype=float32),\n  array([663., 128.,  27.,  26.], dtype=float32)],\n '1-6266': [array([655., 493.,  64.,  74.], dtype=float32)],\n '2-5373': [array([250.,  72.,  35.,  43.], dtype=float32),\n  array([648., 462.,  40.,  47.], dtype=float32)],\n '0-2273': [array([594., 196.,  30.,  28.], dtype=float32)],\n '1-8938': [array([850., 686.,  52.,  33.], dtype=float32)],\n '1-3946': [array([434., 337.,  39.,  63.], dtype=float32)],\n '0-1000': [array([932., 336.,  79.,  48.], dtype=float32)],\n '0-1540': [array([242., 374.,  32.,  24.], dtype=float32)],\n '1-8858': [array([552., 574.,  69.,  63.], dtype=float32),\n  array([769., 615.,  56.,  57.], dtype=float32),\n  array([814.,   6.,  25.,  24.], dtype=float32)],\n '1-8867': [array([804.,  35.,  32.,  31.], dtype=float32)],\n '2-4734': [array([114., 524.,  45.,  48.], dtype=float32)],\n '0-4523': [array([ 33., 674.,  81.,  45.], dtype=float32)],\n '0-20': [array([555., 214.,  50.,  32.], dtype=float32)],\n '1-631': [array([585., 645., 243.,  74.], dtype=float32)],\n '2-5713': [array([363., 295.,  41.,  37.], dtype=float32),\n  array([321., 315.,  36.,  34.], dtype=float32),\n  array([599., 164.,  29.,  25.], dtype=float32),\n  array([766.,  49.,  33.,  30.], dtype=float32)],\n '1-9130': [array([585., 444.,  46.,  51.], dtype=float32),\n  array([869., 660.,  66.,  59.], dtype=float32),\n  array([823., 552.,  52.,  53.], dtype=float32),\n  array([346., 179.,  57.,  55.], dtype=float32),\n  array([659., 240.,  52.,  50.], dtype=float32),\n  array([621., 115.,  48.,  36.], dtype=float32),\n  array([593., 123.,  40.,  33.], dtype=float32),\n  array([596., 157.,  36.,  23.], dtype=float32),\n  array([832., 265.,  64.,  51.], dtype=float32),\n  array([487., 237.,  28.,  29.], dtype=float32),\n  array([310.,  88.,  40.,  30.], dtype=float32),\n  array([321., 430.,  39.,  43.], dtype=float32),\n  array([663., 134.,  49.,  38.], dtype=float32),\n  array([1050.,  185.,   57.,   42.], dtype=float32),\n  array([255., 102.,  39.,  31.], dtype=float32),\n  array([602., 486.,  35.,  45.], dtype=float32)],\n '1-8874': [array([689., 460.,  38.,  42.], dtype=float32)],\n '1-4149': [array([1099.,  258.,   94.,   59.], dtype=float32),\n  array([346., 294.,  21.,  23.], dtype=float32),\n  array([599.,  29.,  30.,  37.], dtype=float32),\n  array([640.,  90.,  38.,  42.], dtype=float32),\n  array([686., 142.,  60.,  63.], dtype=float32),\n  array([247.,  86.,  54.,  40.], dtype=float32),\n  array([729., 129.,  24.,  50.], dtype=float32),\n  array([322.,  62.,  26.,  28.], dtype=float32),\n  array([148., 173.,  34.,  44.], dtype=float32),\n  array([181., 218.,  25.,  27.], dtype=float32),\n  array([592., 300.,  34.,  33.], dtype=float32)],\n '0-1861': [array([314., 383.,  39.,  21.], dtype=float32)],\n '0-4670': [array([631., 175.,  28.,  26.], dtype=float32)],\n '2-5925': [array([526., 653.,  51.,  48.], dtype=float32),\n  array([504., 689.,  36.,  30.], dtype=float32),\n  array([303., 345.,  26.,  27.], dtype=float32)],\n '0-2319': [array([386., 444.,  45.,  38.], dtype=float32)],\n '0-12249': [array([ 97., 602.,  55.,  49.], dtype=float32),\n  array([440., 588.,  39.,  26.], dtype=float32)],\n '1-9273': [array([346., 220.,  42.,  27.], dtype=float32),\n  array([370., 277.,  30.,  34.], dtype=float32),\n  array([187., 561.,  72.,  48.], dtype=float32),\n  array([247., 563.,  31.,  26.], dtype=float32)],\n '0-4674': [array([618., 197.,  28.,  26.], dtype=float32)],\n '1-5336': [array([242., 258.,  39.,  35.], dtype=float32)],\n '0-8940': [array([971., 348.,  36.,  32.], dtype=float32),\n  array([1029.,  409.,   34.,   30.], dtype=float32),\n  array([594., 690.,  41.,  28.], dtype=float32)],\n '0-9823': [array([686., 458.,  30.,  25.], dtype=float32)],\n '0-4789': [array([ 32., 463., 126.,  88.], dtype=float32)],\n '2-5916': [array([546., 577.,  46.,  48.], dtype=float32),\n  array([548., 629.,  39.,  37.], dtype=float32),\n  array([526., 610.,  36.,  33.], dtype=float32),\n  array([327., 307.,  25.,  26.], dtype=float32)],\n '2-5392': [array([192.,  73.,  35.,  43.], dtype=float32)],\n '1-5321': [array([382., 154.,  31.,  37.], dtype=float32),\n  array([284., 251.,  36.,  33.], dtype=float32)],\n '0-9323': [array([818.,  50.,  56.,  45.], dtype=float32)],\n '2-5950': [array([235., 497.,  28.,  29.], dtype=float32),\n  array([259., 515.,  29.,  32.], dtype=float32)],\n '1-6926': [array([432., 630.,  71.,  65.], dtype=float32),\n  array([540., 469.,  58.,  52.], dtype=float32),\n  array([603., 396.,  57.,  50.], dtype=float32)],\n '0-9564': [array([732., 645.,  42.,  35.], dtype=float32)],\n '1-6880': [array([518., 515.,  71.,  68.], dtype=float32),\n  array([617., 365.,  55.,  51.], dtype=float32),\n  array([672., 300.,  57.,  50.], dtype=float32)],\n '1-4542': [array([232., 591.,  82.,  76.], dtype=float32),\n  array([142., 615.,  57.,  37.], dtype=float32)],\n '0-11885': [array([929.,  68.,  70.,  58.], dtype=float32)],\n '0-4583': [array([122., 119.,  56.,  53.], dtype=float32),\n  array([ 40., 140.,  72.,  55.], dtype=float32),\n  array([472., 247.,  45.,  48.], dtype=float32),\n  array([173.,  54.,  65.,  34.], dtype=float32)],\n '1-4088': [array([526.,  36.,  20.,  22.], dtype=float32)],\n '1-4774': [array([ 12., 186.,  42.,  41.], dtype=float32)],\n '1-5279': [array([533., 234.,  63.,  55.], dtype=float32)],\n '0-12273': [array([762., 373.,  28.,  22.], dtype=float32)],\n '1-1929': [array([951., 546.,  35.,  40.], dtype=float32)],\n '1-8862': [array([534., 632.,  83.,  80.], dtype=float32),\n  array([759., 678.,  72.,  40.], dtype=float32),\n  array([802.,  14.,  31.,  28.], dtype=float32)],\n '1-9267': [array([343., 229.,  38.,  26.], dtype=float32),\n  array([180., 548.,  72.,  60.], dtype=float32),\n  array([242., 555.,  31.,  26.], dtype=float32)],\n '1-4197': [array([339., 311.,  40.,  30.], dtype=float32),\n  array([ 63., 349.,  68.,  54.], dtype=float32),\n  array([556., 451.,  50.,  57.], dtype=float32),\n  array([145., 365.,  37.,  31.], dtype=float32),\n  array([323., 333.,  43.,  35.], dtype=float32),\n  array([677., 656.,  67.,  63.], dtype=float32),\n  array([ 95., 451.,  72.,  58.], dtype=float32),\n  array([724., 625.,  39.,  75.], dtype=float32),\n  array([207., 411.,  30.,  33.], dtype=float32)],\n '0-1918': [array([1115.,  234.,   67.,   59.], dtype=float32),\n  array([719., 447.,  51.,  44.], dtype=float32)],\n '0-4726': [array([417., 581.,  66.,  54.], dtype=float32),\n  array([198.,  21.,  58.,  54.], dtype=float32)],\n '1-9288': [array([354., 286.,  45.,  28.], dtype=float32),\n  array([382., 351.,  37.,  38.], dtype=float32),\n  array([199., 676.,  66.,  47.], dtype=float32),\n  array([260., 677.,  36.,  30.], dtype=float32)],\n '0-4830': [array([585., 111.,  39.,  27.], dtype=float32)],\n '0-1896': [array([839.,  88.,  62.,  47.], dtype=float32),\n  array([515., 206.,  42.,  33.], dtype=float32)],\n '0-148': [array([648., 172.,  40.,  44.], dtype=float32)],\n '1-5227': [array([728., 386.,  54.,  67.], dtype=float32)],\n '2-5395': [array([193., 114.,  35.,  43.], dtype=float32)],\n '1-4077': [array([ 31., 487.,  44.,  38.], dtype=float32)],\n '2-6362': [array([185.,  86.,  33.,  28.], dtype=float32)],\n '0-8949': [array([984., 440.,  36.,  32.], dtype=float32),\n  array([1048.,  505.,   26.,   28.], dtype=float32)],\n '0-996': [array([904., 320.,  74.,  45.], dtype=float32)],\n '2-4735': [array([120., 534.,  45.,  48.], dtype=float32)],\n '1-5374': [array([270., 353.,  33.,  30.], dtype=float32),\n  array([292., 375.,  47.,  52.], dtype=float32),\n  array([171., 470.,  37.,  32.], dtype=float32)],\n '0-8891': [array([930., 633.,  37.,  19.], dtype=float32)],\n '1-4244': [array([321., 406.,  38.,  36.], dtype=float32),\n  array([523., 478.,  43.,  55.], dtype=float32)],\n '1-8844': [array([494., 263.,  62.,  54.], dtype=float32),\n  array([679., 317.,  55.,  47.], dtype=float32),\n  array([644.,  61.,  22.,  23.], dtype=float32)],\n '0-9916': [array([747., 407.,  35.,  42.], dtype=float32)],\n '0-5042': [array([559., 468.,  99.,  76.], dtype=float32)],\n '0-95': [array([308., 540., 100.,  81.], dtype=float32)],\n '0-878': [array([720., 679.,  55.,  40.], dtype=float32)],\n '1-4263': [array([289., 686.,  49.,  33.], dtype=float32)],\n '0-4608': [array([ 80., 199.,  74.,  82.], dtype=float32),\n  array([  0., 244.,  71.,  65.], dtype=float32),\n  array([552., 357.,  68.,  77.], dtype=float32),\n  array([147.,  87.,  80.,  47.], dtype=float32)],\n '0-4666': [array([644., 152.,  28.,  26.], dtype=float32)],\n '0-9339': [array([792., 137.,  56.,  45.], dtype=float32)],\n '0-9868': [array([815., 482.,  31.,  27.], dtype=float32),\n  array([742., 176.,  37.,  34.], dtype=float32)],\n '1-9202': [array([405., 608.,  57.,  58.], dtype=float32),\n  array([332., 570.,  52.,  47.], dtype=float32),\n  array([468., 609.,  36.,  39.], dtype=float32),\n  array([274., 392.,  38.,  31.], dtype=float32),\n  array([268., 248.,  53.,  38.], dtype=float32),\n  array([273., 470.,  30.,  27.], dtype=float32)],\n '0-9829': [array([692., 455.,  30.,  25.], dtype=float32)],\n '1-9246': [array([138., 468.,  68.,  51.], dtype=float32),\n  array([340., 596.,  41.,  36.], dtype=float32),\n  array([191., 476.,  31.,  26.], dtype=float32)],\n '0-260': [array([945., 349.,  38.,  36.], dtype=float32)],\n '1-3945': [array([439., 323.,  39.,  63.], dtype=float32)],\n '2-8002': [array([383., 606.,  40.,  37.], dtype=float32)],\n '0-8886': [array([913., 666.,  40.,  29.], dtype=float32)],\n '1-4168': [array([381., 547.,  26.,  25.], dtype=float32),\n  array([637., 237.,  39.,  44.], dtype=float32),\n  array([701., 324.,  41.,  40.], dtype=float32),\n  array([299., 247.,  30.,  25.], dtype=float32),\n  array([436., 196.,  46.,  42.], dtype=float32),\n  array([751., 371.,  63.,  67.], dtype=float32),\n  array([270., 319.,  55.,  42.], dtype=float32),\n  array([792., 360.,  35.,  55.], dtype=float32),\n  array([169., 432.,  30.,  37.], dtype=float32),\n  array([199., 472.,  29.,  34.], dtype=float32),\n  array([660., 556.,  32.,  31.], dtype=float32)],\n '0-1902': [array([916.,  75.,  62.,  47.], dtype=float32),\n  array([571., 219.,  43.,  34.], dtype=float32)],\n '1-9350': [array([582., 323.,  72.,  50.], dtype=float32),\n  array([591., 254.,  45.,  40.], dtype=float32)],\n '0-9921': [array([751., 462.,  36.,  49.], dtype=float32)],\n '1-9113': [array([629., 316.,  42.,  46.], dtype=float32),\n  array([892., 487.,  65.,  61.], dtype=float32),\n  array([852., 410.,  49.,  44.], dtype=float32),\n  array([748., 658.,  57.,  54.], dtype=float32),\n  array([625., 662.,  57.,  55.], dtype=float32),\n  array([403., 160.,  46.,  48.], dtype=float32),\n  array([686., 155.,  38.,  39.], dtype=float32),\n  array([640.,  61.,  44.,  32.], dtype=float32),\n  array([830., 158.,  56.,  50.], dtype=float32),\n  array([538., 149.,  26.,  25.], dtype=float32),\n  array([359.,  84.,  33.,  25.], dtype=float32),\n  array([407., 317.,  28.,  30.], dtype=float32),\n  array([676.,  61.,  44.,  35.], dtype=float32),\n  array([316., 103.,  24.,  21.], dtype=float32),\n  array([650., 351.,  27.,  42.], dtype=float32),\n  array([1125.,  674.,   59.,   45.], dtype=float32),\n  array([1138.,  665.,   69.,   36.], dtype=float32)],\n '1-5266': [array([561., 174.,  40.,  42.], dtype=float32)],\n '0-1883': [array([394., 274.,  41.,  31.], dtype=float32)],\n '0-4215': [array([615., 150.,  40.,  23.], dtype=float32)],\n '0-2295': [array([534., 309.,  39.,  33.], dtype=float32)],\n '0-9877': [array([825., 512.,  35.,  32.], dtype=float32),\n  array([748., 181.,  37.,  34.], dtype=float32)],\n '1-3914': [array([127., 280.,  53.,  34.], dtype=float32),\n  array([ 71., 320.,  67.,  48.], dtype=float32),\n  array([ 96., 306.,  26.,  19.], dtype=float32),\n  array([496., 233.,  29.,  41.], dtype=float32)],\n '0-5039': [array([561., 423.,  92.,  72.], dtype=float32)],\n '0-4272': [array([583., 317.,  57.,  48.], dtype=float32)],\n '0-8887': [array([916., 654.,  40.,  29.], dtype=float32)],\n '0-11883': [array([920.,  54.,  70.,  55.], dtype=float32)],\n '0-9730': [array([424., 352.,  48.,  41.], dtype=float32)],\n '0-9522': [array([ 24., 284.,  65.,  47.], dtype=float32)],\n '1-1986': [array([1012.,    8.,   44.,   46.], dtype=float32)],\n '1-4215': [array([258., 497.,  46.,  42.], dtype=float32),\n  array([ 17., 555.,  49.,  43.], dtype=float32),\n  array([245., 527.,  46.,  42.], dtype=float32),\n  array([100., 615.,  37.,  33.], dtype=float32)],\n '1-5221': [array([770., 237.,  50.,  59.], dtype=float32)],\n '1-5377': [array([281., 392.,  36.,  39.], dtype=float32),\n  array([302., 423.,  51.,  57.], dtype=float32),\n  array([184., 522.,  40.,  32.], dtype=float32)],\n '1-625': [array([576., 361., 217., 193.], dtype=float32)],\n '0-4227': [array([632., 247.,  40.,  23.], dtype=float32)],\n '2-5382': [array([189.,  98.,  35.,  43.], dtype=float32)],\n '1-9053': [array([422., 503.,  59.,  51.], dtype=float32)],\n '2-6403': [array([ 19., 509.,  45.,  40.], dtype=float32)],\n '2-5797': [array([955., 635.,  70.,  60.], dtype=float32),\n  array([1125.,  527.,   67.,   66.], dtype=float32),\n  array([285., 276.,  49.,  41.], dtype=float32),\n  array([818., 627.,  68.,  84.], dtype=float32),\n  array([263., 250.,  56.,  45.], dtype=float32),\n  array([185., 246.,  55.,  42.], dtype=float32),\n  array([386., 272.,  44.,  50.], dtype=float32),\n  array([412., 155.,  26.,  23.], dtype=float32)],\n '1-5337': [array([242., 261.,  39.,  36.], dtype=float32)],\n '0-4499': [array([174., 403.,  47.,  31.], dtype=float32),\n  array([ 54., 457.,  56.,  32.], dtype=float32)],\n '1-5370': [array([264., 305.,  33.,  30.], dtype=float32),\n  array([288., 319.,  47.,  52.], dtype=float32)],\n '0-2304': [array([489., 356.,  42.,  35.], dtype=float32)],\n '0-9379': [array([617., 633.,  77.,  70.], dtype=float32),\n  array([588., 303.,  77.,  59.], dtype=float32)],\n '1-9150': [array([478., 138.,  38.,  41.], dtype=float32),\n  array([287., 369.,  57.,  52.], dtype=float32),\n  array([622., 516.,  57.,  64.], dtype=float32),\n  array([585., 330.,  56.,  55.], dtype=float32),\n  array([543., 341.,  56.,  53.], dtype=float32),\n  array([542., 386.,  59.,  50.], dtype=float32),\n  array([832., 552.,  76.,  67.], dtype=float32),\n  array([419., 537.,  38.,  45.], dtype=float32),\n  array([353., 421.,  42.,  38.], dtype=float32),\n  array([253., 260.,  40.,  33.], dtype=float32),\n  array([626., 364.,  65.,  54.], dtype=float32),\n  array([1093.,  458.,   66.,   53.], dtype=float32),\n  array([188., 281.,  39.,  31.], dtype=float32),\n  array([432., 113.,  35.,  28.], dtype=float32)],\n '1-6226': [array([558.,   0.,  45.,  35.], dtype=float32)],\n '0-1544': [array([204., 399.,  35.,  26.], dtype=float32)],\n '1-6900': [array([466., 641.,  71.,  68.], dtype=float32),\n  array([576., 477.,  58.,  52.], dtype=float32),\n  array([639., 404.,  57.,  50.], dtype=float32)],\n '0-387': [array([1034.,  463.,   41.,   53.], dtype=float32)],\n '0-12298': [array([953., 493.,  31.,  25.], dtype=float32)],\n '0-964': [array([784., 134.,  42.,  28.], dtype=float32)],\n '0-8245': [array([709., 278.,  37.,  34.], dtype=float32)],\n '0-4261': [array([594., 261.,  56.,  47.], dtype=float32)],\n '0-4675': [array([615., 202.,  28.,  26.], dtype=float32)],\n '0-9746': [array([288., 499.,  65.,  58.], dtype=float32),\n  array([471., 576.,  68.,  34.], dtype=float32)],\n '1-5927': [array([  0., 283.,  31.,  54.], dtype=float32)],\n '1-9231': [array([319., 663.,  54.,  52.], dtype=float32),\n  array([217., 573.,  38.,  39.], dtype=float32),\n  array([207., 385.,  59.,  34.], dtype=float32),\n  array([394., 464.,  35.,  27.], dtype=float32)],\n '0-122': [array([659.,   3.,  29.,  30.], dtype=float32)],\n '0-31': [array([518., 171.,  71.,  55.], dtype=float32)],\n '1-5815': [array([344.,   0.,  30.,  26.], dtype=float32)],\n '0-4579': [array([137., 109.,  55.,  51.], dtype=float32),\n  array([ 58., 130.,  70.,  51.], dtype=float32),\n  array([187.,  47.,  61.,  33.], dtype=float32)],\n '0-5001': [array([558.,  74.,  55.,  37.], dtype=float32)],\n '1-485': [array([907., 625.,  29.,  40.], dtype=float32)],\n '0-341': [array([319., 153.,  33.,  32.], dtype=float32)],\n '0-4850': [array([444., 222.,  60.,  38.], dtype=float32)],\n '1-4140': [array([1073.,  274.,   62.,   43.], dtype=float32),\n  array([359., 321.,  21.,  23.], dtype=float32),\n  array([596.,  73.,  29.,  31.], dtype=float32),\n  array([679., 176.,  55.,  56.], dtype=float32),\n  array([282., 143.,  48.,  30.], dtype=float32),\n  array([712., 165.,  28.,  40.], dtype=float32),\n  array([352., 118.,  19.,  26.], dtype=float32),\n  array([190., 217.,  23.,  35.], dtype=float32),\n  array([214., 254.,  25.,  27.], dtype=float32),\n  array([594., 330.,  30.,  29.], dtype=float32)],\n '1-8647': [array([248.,  29.,  31.,  29.], dtype=float32)],\n '0-5035': [array([564., 375.,  85.,  66.], dtype=float32)],\n '0-4514': [array([ 93., 546.,  67.,  44.], dtype=float32)],\n '1-4165': [array([386., 542.,  26.,  25.], dtype=float32),\n  array([638., 236.,  38.,  43.], dtype=float32),\n  array([699., 317.,  41.,  40.], dtype=float32),\n  array([306., 248.,  30.,  25.], dtype=float32),\n  array([750., 365.,  63.,  67.], dtype=float32),\n  array([278., 322.,  54.,  38.], dtype=float32),\n  array([789., 346.,  31.,  52.], dtype=float32),\n  array([176., 431.,  30.,  37.], dtype=float32),\n  array([208., 469.,  29.,  34.], dtype=float32)],\n '0-1872': [array([356., 321.,  41.,  31.], dtype=float32)],\n '0-4601': [array([111., 152.,  64.,  74.], dtype=float32),\n  array([ 17., 203.,  75.,  61.], dtype=float32),\n  array([531., 311.,  57.,  64.], dtype=float32),\n  array([170.,  64.,  73.,  39.], dtype=float32)],\n '0-9418': [array([833., 337.,  33.,  40.], dtype=float32)],\n '1-9397': [array([230., 525.,  53.,  61.], dtype=float32)],\n '0-1890': [array([459., 231.,  41.,  31.], dtype=float32)],\n '0-9513': [array([ 37., 221.,  63.,  41.], dtype=float32)],\n '0-4589': [array([101., 133.,  56.,  53.], dtype=float32),\n  array([ 16., 159.,  73.,  58.], dtype=float32),\n  array([473., 269.,  49.,  56.], dtype=float32),\n  array([158.,  58.,  65.,  34.], dtype=float32)],\n '2-5861': [array([830., 381.,  30.,  26.], dtype=float32),\n  array([804., 413.,  56.,  46.], dtype=float32),\n  array([684., 291.,  33.,  23.], dtype=float32),\n  array([687., 311.,  27.,  32.], dtype=float32),\n  array([668., 299.,  25.,  28.], dtype=float32)],\n '0-9359': [array([710., 330.,  61.,  53.], dtype=float32),\n  array([664., 116.,  75.,  42.], dtype=float32)],\n '2-5882': [array([763., 433.,  30.,  26.], dtype=float32),\n  array([722., 504.,  59.,  43.], dtype=float32),\n  array([615., 263.,  33.,  23.], dtype=float32),\n  array([615., 285.,  27.,  32.], dtype=float32),\n  array([593., 275.,  28.,  29.], dtype=float32)],\n '0-4612': [array([ 57., 237.,  78.,  86.], dtype=float32),\n  array([  0., 293.,  42.,  65.], dtype=float32),\n  array([562., 409.,  76.,  83.], dtype=float32),\n  array([123., 116.,  83.,  50.], dtype=float32)],\n '1-4228': [array([231., 662.,  50.,  46.], dtype=float32),\n  array([209., 687.,  62.,  32.], dtype=float32),\n  array([538., 390.,  34.,  42.], dtype=float32)],\n '1-6884': [array([518., 528.,  71.,  68.], dtype=float32),\n  array([619., 378.,  55.,  51.], dtype=float32),\n  array([675., 311.,  57.,  50.], dtype=float32)],\n '2-8004': [array([373., 632.,  39.,  43.], dtype=float32)],\n '1-6917': [array([439., 629.,  71.,  65.], dtype=float32),\n  array([546., 471.,  58.,  52.], dtype=float32),\n  array([611., 396.,  57.,  50.], dtype=float32)],\n '2-7998': [array([398., 546.,  40.,  38.], dtype=float32)],\n '0-9745': [array([298., 487.,  64.,  56.], dtype=float32),\n  array([478., 562.,  68.,  34.], dtype=float32)],\n '2-7968': [array([515., 319.,  35.,  20.], dtype=float32)],\n '2-5927': [array([525., 674.,  51.,  45.], dtype=float32),\n  array([302., 357.,  26.,  27.], dtype=float32)],\n '1-5246': [array([617., 492.,  69.,  82.], dtype=float32),\n  array([619.,   5.,  40.,  35.], dtype=float32)],\n '1-9280': [array([342., 242.,  45.,  27.], dtype=float32),\n  array([365., 299.,  37.,  38.], dtype=float32),\n  array([178., 607.,  66.,  62.], dtype=float32),\n  array([238., 615.,  32.,  27.], dtype=float32)],\n '1-5700': [array([963., 363.,  45.,  32.], dtype=float32),\n  array([908., 341.,  62.,  35.], dtype=float32),\n  array([720., 444.,  48.,  44.], dtype=float32),\n  array([449., 514.,  38.,  27.], dtype=float32)],\n '0-12176': [array([443., 196.,  31.,  26.], dtype=float32)],\n '0-9905': [array([750., 304.,  35.,  40.], dtype=float32)],\n '1-9085': [array([480., 581.,  28.,  30.], dtype=float32),\n  array([606., 140.,  34.,  27.], dtype=float32),\n  array([833., 279.,  46.,  37.], dtype=float32),\n  array([708., 409.,  52.,  39.], dtype=float32),\n  array([604., 425.,  50.,  49.], dtype=float32),\n  array([655., 461.,  40.,  35.], dtype=float32),\n  array([629., 479.,  52.,  50.], dtype=float32),\n  array([419., 130.,  24.,  25.], dtype=float32)],\n '1-6262': [array([632., 397.,  67.,  66.], dtype=float32)],\n '0-4851': [array([436., 231.,  61.,  39.], dtype=float32)],\n '2-6309': [array([380.,  88.,  24.,  18.], dtype=float32)],\n '0-9384': [array([575., 356.,  81.,  64.], dtype=float32)],\n '0-161': [array([609., 337.,  54.,  56.], dtype=float32)],\n '0-4713': [array([470., 432.,  55.,  50.], dtype=float32),\n  array([263.,   1.,  40.,  36.], dtype=float32)],\n '0-5027': [array([567., 306.,  81.,  57.], dtype=float32)],\n '1-5390': [array([314., 455.,  36.,  42.], dtype=float32),\n  array([339., 514.,  51.,  57.], dtype=float32),\n  array([227., 596.,  45.,  39.], dtype=float32)],\n '1-5882': [array([138., 209.,  45.,  39.], dtype=float32),\n  array([142., 320.,  62.,  53.], dtype=float32)],\n '1-1995': [array([922., 106.,  44.,  51.], dtype=float32)],\n '0-4554': [array([189.,  52.,  50.,  43.], dtype=float32),\n  array([137.,  72.,  46.,  31.], dtype=float32)],\n '2-5369': [array([668., 321.,  40.,  47.], dtype=float32),\n  array([369., 657.,  56.,  53.], dtype=float32),\n  array([ 43., 544.,  82.,  76.], dtype=float32)],\n '0-4858': [array([380., 303.,  70.,  46.], dtype=float32)],\n '2-5759': [array([577., 339.,  52.,  44.], dtype=float32),\n  array([582., 460.,  50.,  43.], dtype=float32),\n  array([669., 464.,  64.,  56.], dtype=float32),\n  array([615., 497.,  51.,  52.], dtype=float32),\n  array([920., 164.,  51.,  46.], dtype=float32),\n  array([1044.,   99.,   55.,   45.], dtype=float32),\n  array([987., 193.,  70.,  54.], dtype=float32),\n  array([429., 475.,  54.,  46.], dtype=float32),\n  array([468., 486.,  41.,  28.], dtype=float32),\n  array([826., 189.,  60.,  54.], dtype=float32),\n  array([311., 248.,  61.,  47.], dtype=float32),\n  array([1105.,  457.,   62.,   61.], dtype=float32),\n  array([944., 414.,  68.,  53.], dtype=float32),\n  array([661., 634.,  61.,  50.], dtype=float32),\n  array([667., 532.,  62.,  45.], dtype=float32)],\n '1-4178': [array([396., 157.,  36.,  26.], dtype=float32),\n  array([319., 554.,  24.,  25.], dtype=float32),\n  array([597., 247.,  40.,  46.], dtype=float32),\n  array([232., 218.,  30.,  25.], dtype=float32),\n  array([712., 402.,  63.,  67.], dtype=float32),\n  array([202., 294.,  61.,  45.], dtype=float32),\n  array([753., 375.,  39.,  59.], dtype=float32),\n  array([283., 258.,  26.,  28.], dtype=float32),\n  array([ 86., 413.,  31.,  38.], dtype=float32)],\n '0-9249': [array([975., 317.,  40.,  32.], dtype=float32)],\n '1-5258': [array([561.,  98.,  40.,  42.], dtype=float32)],\n '1-617': [array([589., 103., 167., 129.], dtype=float32)],\n '2-6248': [array([514., 115.,  36.,  37.], dtype=float32),\n  array([490., 139.,  33.,  31.], dtype=float32),\n  array([468., 156.,  35.,  34.], dtype=float32)],\n '0-9514': [array([ 36., 229.,  64.,  42.], dtype=float32)],\n '1-468': [array([827., 375.,  27.,  26.], dtype=float32)],\n '0-980': [array([832., 236.,  52.,  37.], dtype=float32)],\n '0-12220': [array([220., 429.,  42.,  39.], dtype=float32),\n  array([472., 487.,  32.,  25.], dtype=float32)],\n '0-9629': [array([210., 293.,  41.,  36.], dtype=float32),\n  array([219., 253.,  34.,  27.], dtype=float32)],\n '0-12218': [array([232., 412.,  41.,  38.], dtype=float32),\n  array([478., 470.,  32.,  24.], dtype=float32)],\n '0-4995': [array([551.,  39.,  50.,  29.], dtype=float32)],\n '0-9270': [array([1034.,  360.,   43.,   45.], dtype=float32)],\n '1-5926': [array([  0., 267.,  34.,  55.], dtype=float32)],\n '1-6733': [array([536., 380.,  40.,  41.], dtype=float32)],\n '1-677': [array([289., 298.,  85., 103.], dtype=float32)],\n '1-5895': [array([ 36., 248.,  58.,  38.], dtype=float32),\n  array([ 48., 365.,  68.,  54.], dtype=float32)],\n '1-8987': [array([480.,   6.,  34.,  21.], dtype=float32)],\n '0-9390': [array([563., 430.,  85.,  71.], dtype=float32)],\n '0-4542': [array([190.,  25.,  40.,  33.], dtype=float32),\n  array([142.,  41.,  45.,  30.], dtype=float32)],\n '1-5284': [array([544., 296.,  63.,  59.], dtype=float32)],\n '0-5718': [array([195., 591.,  42.,  41.], dtype=float32)],\n '0-5714': [array([195., 532.,  38.,  39.], dtype=float32)],\n '0-4493': [array([ 95., 387.,  50.,  29.], dtype=float32)],\n '0-9229': [array([998., 297.,  40.,  32.], dtype=float32)],\n '0-4796': [array([  0., 585., 115., 104.], dtype=float32),\n  array([620., 104.,  22.,  14.], dtype=float32)],\n '0-9424': [array([832., 370.,  33.,  40.], dtype=float32)],\n '2-6404': [array([ 16., 508.,  45.,  40.], dtype=float32)],\n '1-4039': [array([331.,  87.,  34.,  28.], dtype=float32)],\n '1-9315': [array([282., 489.,  54.,  38.], dtype=float32),\n  array([307., 576.,  46.,  38.], dtype=float32)],\n '2-7965': [array([512., 257.,  35.,  20.], dtype=float32)],\n '0-9436': [array([828., 459.,  33.,  40.], dtype=float32)],\n '2-7989': [array([424., 485.,  34.,  32.], dtype=float32)],\n '1-8995': [array([483.,  84.,  34.,  26.], dtype=float32)],\n '1-6738': [array([523., 453.,  40.,  41.], dtype=float32)],\n '1-5444': [array([ 44., 596.,  36.,  46.], dtype=float32),\n  array([324., 148.,  38.,  37.], dtype=float32),\n  array([ 76., 619.,  26.,  34.], dtype=float32),\n  array([517., 401.,  53.,  58.], dtype=float32)],\n '0-25': [array([529., 200.,  61.,  50.], dtype=float32)],\n '1-9306': [array([314., 413.,  45.,  34.], dtype=float32),\n  array([345., 497.,  39.,  35.], dtype=float32)],\n '2-6307': [array([381.,  82.,  21.,  18.], dtype=float32)],\n '2-5831': [array([992., 336.,  65.,  54.], dtype=float32),\n  array([1205.,  413.,   63.,   71.], dtype=float32),\n  array([211., 642.,  72.,  60.], dtype=float32),\n  array([743.,  19.,  50.,  32.], dtype=float32),\n  array([178., 595.,  89.,  77.], dtype=float32),\n  array([450., 469.,  62.,  67.], dtype=float32),\n  array([ 90., 611.,  66.,  50.], dtype=float32),\n  array([357., 654.,  58.,  63.], dtype=float32)],\n '0-9523': [array([ 21., 290.,  65.,  47.], dtype=float32)],\n '0-334': [array([330., 180.,  35.,  25.], dtype=float32)],\n '1-5363': [array([331., 267.,  51.,  55.], dtype=float32),\n  array([220., 359.,  41.,  40.], dtype=float32)],\n '0-2285': [array([568., 252.,  34.,  32.], dtype=float32)],\n '0-9241': [array([1036.,  352.,   40.,   32.], dtype=float32)],\n '1-9262': [array([314., 268.,  35.,  24.], dtype=float32),\n  array([126., 589.,  83.,  53.], dtype=float32),\n  array([195., 593.,  31.,  26.], dtype=float32)],\n '1-6907': [array([465., 652.,  71.,  65.], dtype=float32),\n  array([574., 486.,  58.,  52.], dtype=float32),\n  array([635., 413.,  57.,  50.], dtype=float32)],\n '0-4518': [array([ 62., 600.,  76.,  56.], dtype=float32)],\n '2-5825': [array([945., 242.,  64.,  50.], dtype=float32),\n  array([1127.,  297.,   76.,   67.], dtype=float32),\n  array([219., 544.,  67.,  59.], dtype=float32),\n  array([182., 499.,  89.,  77.], dtype=float32),\n  array([442., 370.,  62.,  67.], dtype=float32),\n  array([ 93., 509.,  61.,  44.], dtype=float32),\n  array([347., 555.,  55.,  60.], dtype=float32)],\n '2-4745': [array([154., 654.,  45.,  54.], dtype=float32)],\n '1-5220': [array([776., 204.,  50.,  56.], dtype=float32)],\n '1-5885': [array([115., 217.,  45.,  39.], dtype=float32),\n  array([121., 326.,  62.,  54.], dtype=float32)],\n '1-6870': [array([510., 518.,  71.,  68.], dtype=float32),\n  array([613., 374.,  55.,  51.], dtype=float32),\n  array([668., 307.,  57.,  50.], dtype=float32)],\n '0-12292': [array([901., 447.,  31.,  25.], dtype=float32)],\n '1-9206': [array([399., 666.,  57.,  53.], dtype=float32),\n  array([318., 619.,  59.,  57.], dtype=float32),\n  array([463., 658.,  36.,  39.], dtype=float32),\n  array([265., 425.,  38.,  31.], dtype=float32),\n  array([262., 273.,  46.,  35.], dtype=float32),\n  array([259., 498.,  30.,  27.], dtype=float32)],\n '1-2027': [array([778., 553.,  50.,  59.], dtype=float32)],\n '1-845': [array([1047.,  119.,   77.,   71.], dtype=float32)],\n '0-9654': [array([307., 586.,  28.,  31.], dtype=float32),\n  array([171., 358.,  51.,  47.], dtype=float32),\n  array([168., 310.,  44.,  43.], dtype=float32),\n  array([ 53., 217.,  61.,  51.], dtype=float32),\n  array([780., 339.,  28.,  32.], dtype=float32)],\n '0-8269': [array([808., 449.,  49.,  45.], dtype=float32)],\n '0-9913': [array([747., 378.,  35.,  40.], dtype=float32)],\n '0-5711': [array([195., 488.,  36.,  37.], dtype=float32)],\n '1-4221': [array([245., 602.,  46.,  42.], dtype=float32),\n  array([  0., 678.,  42.,  41.], dtype=float32),\n  array([226., 633.,  55.,  48.], dtype=float32)],\n '1-667': [array([344., 105.,  66.,  73.], dtype=float32)],\n '1-5259': [array([561., 108.,  40.,  42.], dtype=float32)],\n '1-5317': [array([407., 176.,  31.,  37.], dtype=float32),\n  array([316., 271.,  32.,  30.], dtype=float32)],\n '0-4297': [array([636., 618.,  74.,  71.], dtype=float32)],\n '1-2034': [array([765., 683.,  54.,  36.], dtype=float32)],\n '0-9636': [array([319., 479.,  22.,  24.], dtype=float32),\n  array([203., 318.,  40.,  34.], dtype=float32),\n  array([203., 275.,  37.,  30.], dtype=float32),\n  array([101., 190.,  53.,  43.], dtype=float32)],\n '2-5504': [array([278., 554.,  40.,  39.], dtype=float32)],\n '0-1023': [array([1106.,  520.,  113.,   91.], dtype=float32)],\n '1-4507': [array([251., 209.,  63.,  59.], dtype=float32)],\n '1-6709': [array([707., 275.,  36.,  34.], dtype=float32)],\n '2-5683': [array([320., 204.,  34.,  31.], dtype=float32),\n  array([280., 220.,  27.,  21.], dtype=float32),\n  array([597.,  12.,  27.,  20.], dtype=float32)],\n '0-9827': [array([690., 457.,  30.,  25.], dtype=float32)],\n '1-4193': [array([352., 302.,  40.,  30.], dtype=float32),\n  array([ 88., 339.,  68.,  54.], dtype=float32),\n  array([562., 430.,  50.,  57.], dtype=float32),\n  array([165., 350.,  37.,  31.], dtype=float32),\n  array([338., 319.,  44.,  36.], dtype=float32),\n  array([681., 631.,  67.,  73.], dtype=float32),\n  array([114., 440.,  79.,  52.], dtype=float32),\n  array([726., 595.,  39.,  67.], dtype=float32),\n  array([222., 398.,  30.,  33.], dtype=float32),\n  array([  0., 640.,  36.,  39.], dtype=float32)],\n '1-4106': [array([872.,  37.,  46.,  31.], dtype=float32),\n  array([511.,  94.,  25.,  26.], dtype=float32)],\n '0-12242': [array([105., 575.,  53.,  47.], dtype=float32),\n  array([432., 588.,  39.,  26.], dtype=float32)],\n '0-4708': [array([492., 388.,  49.,  48.], dtype=float32),\n  array([287.,   1.,  41.,  31.], dtype=float32)],\n '1-9170': [array([465., 226.,  45.,  40.], dtype=float32),\n  array([218., 503.,  69.,  61.], dtype=float32),\n  array([559., 540.,  83.,  75.], dtype=float32),\n  array([518., 551.,  70.,  68.], dtype=float32),\n  array([506., 615.,  71.,  77.], dtype=float32),\n  array([282., 593.,  46.,  66.], dtype=float32),\n  array([187., 357.,  48.,  42.], dtype=float32),\n  array([609., 603.,  87.,  79.], dtype=float32),\n  array([118., 383.,  39.,  32.], dtype=float32),\n  array([414., 187.,  35.,  33.], dtype=float32),\n  array([707., 591.,  85.,  44.], dtype=float32)],\n '1-4159': [array([1234.,  436.,   45.,   57.], dtype=float32),\n  array([631., 165.,  32.,  38.], dtype=float32),\n  array([684., 240.,  41.,  40.], dtype=float32),\n  array([302., 179.,  29.,  24.], dtype=float32),\n  array([736., 285.,  60.,  63.], dtype=float32),\n  array([279., 244.,  52.,  36.], dtype=float32),\n  array([775., 269.,  25.,  52.], dtype=float32),\n  array([179., 345.,  30.,  37.], dtype=float32),\n  array([206., 383.,  29.,  34.], dtype=float32),\n  array([645., 461.,  35.,  34.], dtype=float32)],\n '0-9389': [array([565., 418.,  85.,  69.], dtype=float32)],\n '0-4528': [array([209.,   6.,  23.,  28.], dtype=float32)],\n '0-12210': [array([284., 332.,  37.,  34.], dtype=float32),\n  array([507., 394.,  32.,  21.], dtype=float32)],\n '2-5445': [array([129., 428.,  54.,  51.], dtype=float32)],\n '1-5300': [array([610., 522.,  84.,  79.], dtype=float32)],\n '1-5484': [array([389., 259.,  58.,  46.], dtype=float32),\n  array([183., 621.,  56.,  66.], dtype=float32),\n  array([322., 289.,  47.,  43.], dtype=float32),\n  array([313., 283.,  30.,  24.], dtype=float32),\n  array([419., 168.,  49.,  40.], dtype=float32),\n  array([348.,  56.,  55.,  45.], dtype=float32),\n  array([416.,  32.,  48.,  36.], dtype=float32)],\n '1-6238': [array([571.,  53.,  61.,  62.], dtype=float32)],\n '0-4246': [array([630., 299.,  43.,  30.], dtype=float32)],\n '1-4240': [array([326., 391.,  40.,  36.], dtype=float32),\n  array([528., 454.,  42.,  53.], dtype=float32)],\n '0-4476': [array([163., 237.,  44.,  19.], dtype=float32)],\n '0-9875': [array([823., 506.,  34.,  31.], dtype=float32),\n  array([746., 178.,  37.,  34.], dtype=float32)],\n '1-5839': [array([421.,  94.,  62.,  66.], dtype=float32)],\n '0-9702': [array([505., 186.,  38.,  32.], dtype=float32),\n  array([949., 623.,  42.,  51.], dtype=float32)],\n '1-5433': [array([175., 567.,  36.,  46.], dtype=float32),\n  array([177., 678.,  44.,  40.], dtype=float32),\n  array([411., 150.,  35.,  30.], dtype=float32),\n  array([203., 581.,  26.,  34.], dtype=float32),\n  array([600., 352.,  46.,  55.], dtype=float32)],\n '1-6772': [array([336., 178.,  39.,  34.], dtype=float32),\n  array([229., 292.,  48.,  53.], dtype=float32)],\n '0-12232': [array([148., 516.,  49.,  44.], dtype=float32),\n  array([437., 563.,  34.,  25.], dtype=float32)],\n '1-487': [array([917., 656.,  31.,  40.], dtype=float32)],\n '1-5622': [array([570.,  50.,  24.,  21.], dtype=float32)],\n '0-77': [array([411., 250.,  62.,  60.], dtype=float32)],\n '1-4452': [array([643., 324.,  32.,  42.], dtype=float32),\n  array([329.,  92.,  44.,  33.], dtype=float32)],\n '1-4754': [array([162.,  44.,  50.,  46.], dtype=float32)],\n '2-5780': [array([608., 500.,  59.,  63.], dtype=float32),\n  array([624., 638.,  56.,  48.], dtype=float32),\n  array([725., 657.,  78.,  64.], dtype=float32),\n  array([657., 678.,  71.,  41.], dtype=float32),\n  array([1035.,  271.,   67.,   57.], dtype=float32),\n  array([1198.,  173.,   67.,   66.], dtype=float32),\n  array([1132.,  308.,   80.,   64.], dtype=float32),\n  array([451., 664.,  74.,  55.], dtype=float32),\n  array([522., 676.,  27.,  42.], dtype=float32),\n  array([916., 296.,  63.,  58.], dtype=float32),\n  array([289., 394.,  71.,  69.], dtype=float32),\n  array([1063.,  574.,   78.,   63.], dtype=float32),\n  array([419.,  41.,  57.,  50.], dtype=float32),\n  array([356.,  40.,  54.,  44.], dtype=float32),\n  array([531.,  62.,  35.,  36.], dtype=float32)],\n '0-22': [array([538., 209.,  56.,  47.], dtype=float32)],\n '1-9151': [array([473., 131.,  38.,  41.], dtype=float32),\n  array([280., 364.,  57.,  52.], dtype=float32),\n  array([616., 517.,  57.,  64.], dtype=float32),\n  array([579., 327.,  56.,  57.], dtype=float32),\n  array([537., 339.,  57.,  54.], dtype=float32),\n  array([535., 383.,  63.,  54.], dtype=float32),\n  array([825., 554.,  78.,  68.], dtype=float32),\n  array([406., 538.,  38.,  45.], dtype=float32),\n  array([347., 416.,  42.,  40.], dtype=float32),\n  array([243., 252.,  42.,  34.], dtype=float32),\n  array([619., 361.,  68.,  56.], dtype=float32),\n  array([1089.,  461.,   68.,   55.], dtype=float32),\n  array([179., 274.,  39.,  31.], dtype=float32),\n  array([426., 105.,  35.,  29.], dtype=float32)],\n '0-11886': [array([934.,  75.,  70.,  59.], dtype=float32)],\n '1-9008': [array([414., 181.,  35.,  29.], dtype=float32)],\n '0-5720': [array([193., 625.,  43.,  41.], dtype=float32)],\n '1-4762': [array([121., 128.,  40.,  33.], dtype=float32)],\n '1-6740': [array([516., 474.,  40.,  41.], dtype=float32)],\n '1-5663': [array([782., 101.,  28.,  23.], dtype=float32),\n  array([637., 209.,  35.,  29.], dtype=float32),\n  array([420., 319.,  30.,  23.], dtype=float32)],\n '2-5868': [array([820., 372.,  30.,  26.], dtype=float32),\n  array([797., 414.,  50.,  41.], dtype=float32),\n  array([670., 256.,  33.,  23.], dtype=float32),\n  array([671., 279.,  27.,  32.], dtype=float32),\n  array([651., 269.,  25.,  28.], dtype=float32)],\n '0-5024': [array([567., 280.,  76.,  54.], dtype=float32)],\n '2-6407': [array([  7., 504.,  45.,  40.], dtype=float32)],\n '0-9870': [array([818., 489.,  31.,  28.], dtype=float32),\n  array([744., 176.,  37.,  34.], dtype=float32)],\n '1-5534': [array([195., 553.,  77.,  80.], dtype=float32),\n  array([298., 518.,  51.,  57.], dtype=float32)],\n '2-5865': [array([827., 376.,  30.,  26.], dtype=float32),\n  array([800., 410.,  57.,  48.], dtype=float32),\n  array([676., 271.,  33.,  23.], dtype=float32),\n  array([678., 293.,  27.,  32.], dtype=float32),\n  array([658., 282.,  25.,  28.], dtype=float32)],\n '1-8660': [array([216.,  50.,  24.,  25.], dtype=float32)],\n '2-6396': [array([ 35., 486.,  45.,  40.], dtype=float32)],\n '0-259': [array([939., 341.,  37.,  36.], dtype=float32)],\n '0-12264': [array([511., 655.,  44.,  35.], dtype=float32),\n  array([709., 354.,  27.,  21.], dtype=float32)],\n '1-5804': [array([316.,  72.,  28.,  30.], dtype=float32)],\n '1-9201': [array([406., 591.,  57.,  58.], dtype=float32),\n  array([334., 555.,  54.,  42.], dtype=float32),\n  array([471., 591.,  36.,  39.], dtype=float32),\n  array([276., 381.,  38.,  31.], dtype=float32),\n  array([269., 239.,  50.,  36.], dtype=float32),\n  array([275., 459.,  30.,  27.], dtype=float32)],\n '0-337': [array([328., 166.,  33.,  26.], dtype=float32)],\n '0-9908': [array([747., 330.,  35.,  40.], dtype=float32)],\n '0-8929': [array([928., 324.,  31.,  27.], dtype=float32),\n  array([561., 615.,  38.,  34.], dtype=float32)],\n '0-4659': [array([667., 111.,  28.,  26.], dtype=float32)],\n '1-5797': [array([340., 102.,  23.,  24.], dtype=float32)],\n '0-9288': [array([1120.,  511.,   56.,   52.], dtype=float32)],\n '2-8001': [array([390., 591.,  44.,  38.], dtype=float32)],\n '0-9290': [array([1131.,  529.,   56.,   52.], dtype=float32)],\n '0-9251': [array([966., 308.,  40.,  32.], dtype=float32)],\n '0-4819': [array([626.,  99.,  33.,  24.], dtype=float32)],\n '1-6724': [array([584., 340.,  40.,  41.], dtype=float32)],\n '0-883': [array([710., 616.,  54.,  44.], dtype=float32)],\n '0-4516': [array([ 78., 572.,  72.,  53.], dtype=float32)],\n '1-9244': [array([119., 435.,  65.,  58.], dtype=float32),\n  array([323., 558.,  41.,  36.], dtype=float32),\n  array([174., 441.,  31.,  26.], dtype=float32)],\n '2-5730': [array([751., 132.,  44.,  29.], dtype=float32),\n  array([561., 166.,  44.,  32.], dtype=float32),\n  array([305., 501.,  47.,  43.], dtype=float32),\n  array([263., 517.,  38.,  39.], dtype=float32),\n  array([564., 343.,  40.,  34.], dtype=float32),\n  array([603., 170.,  28.,  20.], dtype=float32),\n  array([669.,  48.,  45.,  34.], dtype=float32),\n  array([682., 144.,  37.,  30.], dtype=float32),\n  array([748., 204.,  55.,  34.], dtype=float32),\n  array([753., 163.,  41.,  28.], dtype=float32)],\n '1-8641': [array([313.,  77.,  26.,  23.], dtype=float32)],\n '2-5688': [array([286., 128.,  34.,  31.], dtype=float32),\n  array([242., 138.,  36.,  34.], dtype=float32)],\n '0-12261': [array([495., 639.,  44.,  35.], dtype=float32),\n  array([693., 349.,  27.,  21.], dtype=float32)],\n '0-11902': [array([999., 227.,  67.,  63.], dtype=float32)],\n '1-5637': [array([600.,  61.,  30.,  25.], dtype=float32)],\n '0-12262': [array([501., 644.,  44.,  35.], dtype=float32),\n  array([698., 350.,  27.,  21.], dtype=float32)],\n '0-4809': [array([626., 106.,  34.,  24.], dtype=float32)],\n '0-9265': [array([1006.,  320.,   41.,   40.], dtype=float32)],\n '0-4571': [array([161.,  95.,  50.,  43.], dtype=float32),\n  array([ 91., 116.,  63.,  44.], dtype=float32),\n  array([467., 207.,  40.,  37.], dtype=float32),\n  array([212.,  37.,  46.,  29.], dtype=float32)],\n '0-164': [array([599., 379.,  57.,  59.], dtype=float32)],\n '0-1869': [array([359., 342.,  38.,  26.], dtype=float32)],\n '1-1926': [array([942., 515.,  32.,  34.], dtype=float32)],\n '1-4170': [array([376., 541.,  26.,  25.], dtype=float32),\n  array([635., 229.,  39.,  44.], dtype=float32),\n  array([693., 321.,  41.,  40.], dtype=float32),\n  array([293., 236.,  30.,  25.], dtype=float32),\n  array([748., 374.,  63.,  67.], dtype=float32),\n  array([263., 306.,  58.,  43.], dtype=float32),\n  array([788., 349.,  38.,  58.], dtype=float32),\n  array([160., 419.,  30.,  37.], dtype=float32),\n  array([191., 461.,  29.,  34.], dtype=float32),\n  array([652., 549.,  42.,  34.], dtype=float32)],\n '0-105': [array([642.,  43.,  20.,  22.], dtype=float32)],\n '1-8823': [array([576., 207.,  48.,  46.], dtype=float32),\n  array([723., 235.,  43.,  34.], dtype=float32)],\n '0-4873': [array([241., 547.,  90.,  65.], dtype=float32)],\n '1-8992': [array([484.,  54.,  34.,  24.], dtype=float32)],\n '2-5937': [array([265., 443.,  28.,  29.], dtype=float32),\n  array([287., 456.,  29.,  32.], dtype=float32)],\n '1-6744': [array([523., 505.,  40.,  41.], dtype=float32),\n  array([280., 231.,  69.,  66.], dtype=float32)],\n '1-6773': [array([439., 621.,  43.,  44.], dtype=float32),\n  array([352., 182.,  39.,  34.], dtype=float32),\n  array([235., 294.,  49.,  54.], dtype=float32)],\n '2-6415': [array([  8., 463.,  42.,  40.], dtype=float32)],\n '2-5749': [array([498., 311.,  52.,  38.], dtype=float32),\n  array([500., 424.,  48.,  41.], dtype=float32),\n  array([578., 428.,  62.,  46.], dtype=float32),\n  array([826., 170.,  45.,  41.], dtype=float32),\n  array([928., 123.,  45.,  35.], dtype=float32),\n  array([879., 201.,  59.,  38.], dtype=float32),\n  array([363., 436.,  51.,  39.], dtype=float32),\n  array([410., 446.,  32.,  22.], dtype=float32),\n  array([744., 192.,  51.,  45.], dtype=float32),\n  array([260., 218.,  53.,  37.], dtype=float32),\n  array([958., 407.,  52.,  45.], dtype=float32),\n  array([534., 456.,  45.,  39.], dtype=float32),\n  array([835., 395.,  56.,  44.], dtype=float32),\n  array([567., 548.,  58.,  44.], dtype=float32),\n  array([578., 476.,  52.,  40.], dtype=float32)],\n '1-5403': [array([335., 424.,  36.,  48.], dtype=float32),\n  array([350., 527.,  51.,  57.], dtype=float32),\n  array([245., 584.,  42.,  41.], dtype=float32),\n  array([676., 100.,  26.,  38.], dtype=float32)],\n '0-12302': [array([979., 521.,  36.,  29.], dtype=float32)],\n '0-4217': [array([619., 167.,  40.,  23.], dtype=float32)],\n '0-11912': [array([1045.,  357.,   70.,   69.], dtype=float32)],\n '0-394': [array([1020.,  591.,   50.,   55.], dtype=float32)],\n '0-4784': [array([ 73., 384., 108.,  72.], dtype=float32)],\n '2-6342': [array([307., 106.,  33.,  28.], dtype=float32)],\n '1-5270': [array([549., 185.,  57.,  52.], dtype=float32)],\n '1-3913': [array([131., 264.,  53.,  34.], dtype=float32),\n  array([ 73., 302.,  67.,  48.], dtype=float32),\n  array([100., 288.,  26.,  19.], dtype=float32),\n  array([496., 217.,  29.,  41.], dtype=float32)],\n '2-5505': [array([271., 567.,  40.,  39.], dtype=float32)],\n '0-9700': [array([  0., 670.,  60.,  49.], dtype=float32),\n  array([  0., 615.,  44.,  58.], dtype=float32),\n  array([507., 173.,  37.,  32.], dtype=float32),\n  array([941., 595.,  42.,  51.], dtype=float32)],\n '2-5714': [array([594.,  50.,  39.,  27.], dtype=float32),\n  array([362., 305.,  42.,  38.], dtype=float32),\n  array([320., 325.,  36.,  34.], dtype=float32),\n  array([599., 171.,  29.,  26.], dtype=float32),\n  array([765.,  54.,  35.,  29.], dtype=float32)],\n '1-9525': [array([401., 664.,  32.,  31.], dtype=float32)],\n '1-3963': [array([304., 574.,  57.,  88.], dtype=float32)],\n '1-5499': [array([374., 687.,  57.,  32.], dtype=float32),\n  array([404., 549.,  57.,  58.], dtype=float32),\n  array([336., 415.,  58.,  51.], dtype=float32),\n  array([406., 391.,  48.,  44.], dtype=float32)],\n '0-4848': [array([460., 204.,  57.,  37.], dtype=float32)],\n '1-5213': [array([818.,   0.,  50.,  43.], dtype=float32)],\n '1-4207': [array([291., 349.,  41.,  36.], dtype=float32),\n  array([  0., 387.,  65.,  54.], dtype=float32),\n  array([531., 523.,  53.,  69.], dtype=float32),\n  array([597., 668.,  47.,  44.], dtype=float32),\n  array([ 78., 405.,  43.,  35.], dtype=float32),\n  array([274., 378.,  49.,  41.], dtype=float32),\n  array([ 18., 503.,  88.,  68.], dtype=float32),\n  array([151., 457.,  30.,  33.], dtype=float32)],\n '1-5451': [array([291., 241.,  38.,  42.], dtype=float32),\n  array([394.,  18.,  38.,  35.], dtype=float32),\n  array([482., 543.,  53.,  58.], dtype=float32)],\n '1-5494': [array([386., 593.,  62.,  58.], dtype=float32),\n  array([304., 627.,  55.,  54.], dtype=float32),\n  array([296., 627.,  38.,  32.], dtype=float32),\n  array([417., 474.,  57.,  58.], dtype=float32),\n  array([348., 353.,  58.,  51.], dtype=float32),\n  array([418., 332.,  48.,  44.], dtype=float32)],\n '1-4262': [array([288., 667.,  49.,  46.], dtype=float32)],\n '1-5478': [array([382., 129.,  56.,  44.], dtype=float32),\n  array([192., 458.,  56.,  66.], dtype=float32),\n  array([312., 158.,  47.,  43.], dtype=float32),\n  array([307., 154.,  30.,  24.], dtype=float32),\n  array([414.,  47.,  44.,  34.], dtype=float32),\n  array([777., 527.,  86.,  59.], dtype=float32)],\n '0-9371': [array([647., 485.,  77.,  70.], dtype=float32),\n  array([613., 218.,  75.,  45.], dtype=float32)],\n '1-5679': [array([920., 141.,  37.,  27.], dtype=float32),\n  array([876., 126.,  35.,  34.], dtype=float32),\n  array([707., 241.,  43.,  35.], dtype=float32),\n  array([464., 339.,  38.,  27.], dtype=float32)],\n '0-9688': [array([ 79., 493.,  66.,  69.], dtype=float32),\n  array([ 86., 435.,  44.,  43.], dtype=float32),\n  array([903., 440.,  35.,  44.], dtype=float32)],\n '0-9786': [array([949., 577.,  42.,  38.], dtype=float32),\n  array([248., 548.,  61.,  32.], dtype=float32)],\n '1-9383': [array([410., 679.,  91.,  40.], dtype=float32),\n  array([437., 553.,  69.,  65.], dtype=float32),\n  array([326., 415.,  50.,  54.], dtype=float32)],\n '1-6866': [array([521., 529.,  69.,  67.], dtype=float32),\n  array([624., 385.,  55.,  50.], dtype=float32),\n  array([680., 321.,  57.,  50.], dtype=float32)],\n '1-4076': [array([ 44., 471.,  44.,  38.], dtype=float32)],\n '1-9363': [array([519., 433.,  73.,  51.], dtype=float32),\n  array([532., 347.,  49.,  44.], dtype=float32)],\n '1-5445': [array([ 29., 608.,  36.,  46.], dtype=float32),\n  array([316., 158.,  38.,  40.], dtype=float32),\n  array([ 59., 633.,  26.,  34.], dtype=float32),\n  array([511., 421.,  53.,  58.], dtype=float32)],\n '0-5023': [array([568., 271.,  74.,  54.], dtype=float32)],\n '0-26': [array([525., 196.,  63.,  51.], dtype=float32)],\n '0-4498': [array([178., 391.,  47.,  31.], dtype=float32),\n  array([ 63., 444.,  55.,  31.], dtype=float32)],\n '0-2335': [array([259., 570.,  52.,  48.], dtype=float32)],\n '2-5712': [array([364., 286.,  40.,  36.], dtype=float32),\n  array([322., 305.,  36.,  34.], dtype=float32),\n  array([599., 157.,  28.,  25.], dtype=float32),\n  array([766.,  45.,  31.,  26.], dtype=float32)],\n '2-6489': [array([189., 662.,  30.,  37.], dtype=float32)],\n '1-4048': [array([276., 220.,  38.,  24.], dtype=float32)],\n '0-9663': [array([313., 621.,  33.,  34.], dtype=float32),\n  array([170., 352.,  55.,  53.], dtype=float32),\n  array([165., 306.,  44.,  43.], dtype=float32),\n  array([ 41., 199.,  61.,  51.], dtype=float32),\n  array([813., 319.,  35.,  37.], dtype=float32)],\n '0-4281': [array([591., 403.,  67.,  51.], dtype=float32)],\n '1-9293': [array([329., 298.,  45.,  30.], dtype=float32),\n  array([353., 363.,  37.,  38.], dtype=float32)],\n '0-249': [array([888., 273.,  37.,  35.], dtype=float32)],\n '0-12289': [array([875., 429.,  31.,  25.], dtype=float32)],\n '1-6899': [array([468., 636.,  71.,  68.], dtype=float32),\n  array([579., 474.,  58.,  52.], dtype=float32),\n  array([641., 401.,  57.,  50.], dtype=float32)],\n '1-5835': [array([448., 102.,  63.,  65.], dtype=float32)],\n '0-1021': [array([1082.,  494.,  105.,   79.], dtype=float32)],\n '2-5428': [array([222., 342.,  49.,  47.], dtype=float32)],\n '0-9634': [array([322., 469.,  22.,  24.], dtype=float32),\n  array([207., 312.,  41.,  34.], dtype=float32),\n  array([207., 270.,  36.,  29.], dtype=float32)],\n '0-4299': [array([648., 654.,  74.,  65.], dtype=float32)],\n '2-5379': [array([207., 139.,  35.,  43.], dtype=float32),\n  array([614., 601.,  47.,  50.], dtype=float32)],\n '1-5814': [array([340.,   6.,  30.,  28.], dtype=float32)],\n '0-8967': [array([1075.,  670.,   36.,   32.], dtype=float32)],\n '1-8872': [array([687., 429.,  38.,  42.], dtype=float32)],\n '2-5783': [array([581., 546.,  62.,  58.], dtype=float32),\n  array([596., 678.,  60.,  41.], dtype=float32),\n  array([710., 687.,  78.,  32.], dtype=float32),\n  array([1009.,  307.,   70.,   60.], dtype=float32),\n  array([1176.,  210.,   67.,   66.], dtype=float32),\n  array([1107.,  352.,   82.,   68.], dtype=float32),\n  array([895., 331.,  64.,  60.], dtype=float32),\n  array([248., 432.,  75.,  73.], dtype=float32),\n  array([1043.,  613.,   76.,   70.], dtype=float32),\n  array([387.,  56.,  57.,  50.], dtype=float32),\n  array([328.,  62.,  46.,  31.], dtype=float32),\n  array([508.,  76.,  35.,  36.], dtype=float32)],\n '0-111': [array([649.,  22.,  23.,  24.], dtype=float32)],\n '1-9032': [array([412., 249.,  44.,  29.], dtype=float32)],\n '0-1003': [array([951., 345.,  85.,  54.], dtype=float32)],\n '0-9693': [array([ 36., 563.,  83.,  73.], dtype=float32),\n  array([ 44., 507.,  46.,  48.], dtype=float32),\n  array([514., 115.,  37.,  32.], dtype=float32),\n  array([920., 502.,  38.,  44.], dtype=float32)],\n '2-5368': [array([672., 284.,  40.,  47.], dtype=float32),\n  array([376., 618.,  56.,  53.], dtype=float32),\n  array([ 64., 510.,  76.,  73.], dtype=float32)],\n '0-12304': [array([991., 537.,  36.,  29.], dtype=float32)],\n '0-9665': [array([315., 629.,  33.,  34.], dtype=float32),\n  array([166., 351.,  56.,  54.], dtype=float32),\n  array([163., 305.,  44.,  43.], dtype=float32),\n  array([ 37., 197.,  61.,  51.], dtype=float32),\n  array([824., 320.,  35.,  33.], dtype=float32)],\n '1-4115': [array([871.,  81.,  50.,  35.], dtype=float32)],\n '1-6873': [array([511., 512.,  71.,  68.], dtype=float32),\n  array([612., 369.,  55.,  51.], dtype=float32),\n  array([665., 301.,  57.,  50.], dtype=float32)],\n '0-4761': [array([  0., 126.,  59.,  52.], dtype=float32),\n  array([123., 119.,  91.,  41.], dtype=float32),\n  array([ 58., 309.,  77.,  74.], dtype=float32)],\n '1-6903': [array([466., 651.,  71.,  66.], dtype=float32),\n  array([577., 484.,  58.,  52.], dtype=float32),\n  array([639., 411.,  57.,  50.], dtype=float32)],\n '0-8890': [array([925., 635.,  37.,  19.], dtype=float32)],\n '0-976': [array([816., 214.,  48.,  34.], dtype=float32)],\n '0-4489': [array([117., 347.,  49.,  25.], dtype=float32)],\n '1-6767': [array([442., 578.,  41.,  37.], dtype=float32),\n  array([176., 288.,  63.,  58.], dtype=float32)],\n '1-3912': [array([135., 249.,  53.,  34.], dtype=float32),\n  array([ 75., 284.,  67.,  48.], dtype=float32),\n  array([104., 270.,  26.,  19.], dtype=float32),\n  array([497., 202.,  29.,  41.], dtype=float32)],\n '1-849': [array([1089.,  175.,   77.,   71.], dtype=float32)],\n '2-5453': [array([ 36., 578.,  59.,  55.], dtype=float32)],\n '1-4153': [array([1166.,  316.,   71.,   58.], dtype=float32),\n  array([362., 346.,  21.,  23.], dtype=float32),\n  array([612.,  63.,  31.,  39.], dtype=float32),\n  array([662., 129.,  38.,  40.], dtype=float32),\n  array([705., 179.,  60.,  63.], dtype=float32),\n  array([262., 130.,  52.,  37.], dtype=float32),\n  array([747., 167.,  25.,  52.], dtype=float32),\n  array([166., 224.,  30.,  37.], dtype=float32),\n  array([190., 248.,  27.,  29.], dtype=float32),\n  array([613., 345.,  33.,  31.], dtype=float32)],\n '0-9299': [array([1154.,  625.,   60.,   66.], dtype=float32)],\n '0-5037': [array([563., 394.,  88.,  68.], dtype=float32)],\n '1-612': [array([592.,   0., 148.,  88.], dtype=float32)],\n '1-9393': [array([333., 645.,  71.,  64.], dtype=float32),\n  array([228., 461.,  53.,  61.], dtype=float32)],\n '0-2306': [array([477., 367.,  42.,  35.], dtype=float32)],\n '1-8989': [array([481.,  22.,  34.,  22.], dtype=float32)],\n '1-5855': [array([256.,  74.,  54.,  55.], dtype=float32)],\n '1-621': [array([580., 218., 192., 155.], dtype=float32)],\n '0-4795': [array([  0., 565., 123., 103.], dtype=float32)],\n '1-3942': [array([446., 293.,  39.,  63.], dtype=float32)],\n '0-9729': [array([429., 347.,  48.,  41.], dtype=float32)],\n '2-6353': [array([221., 117.,  33.,  28.], dtype=float32)],\n '0-995': [array([897., 316.,  73.,  45.], dtype=float32)],\n '1-4225': [array([236., 640.,  49.,  45.], dtype=float32),\n  array([217., 675.,  55.,  39.], dtype=float32),\n  array([541., 381.,  31.,  38.], dtype=float32)],\n '0-240': [array([855., 218.,  29.,  30.], dtype=float32)],\n '2-4728': [array([134., 518.,  45.,  48.], dtype=float32)],\n '1-5508': [array([353., 634.,  60.,  56.], dtype=float32),\n  array([386., 486.,  57.,  58.], dtype=float32),\n  array([312., 345.,  61.,  57.], dtype=float32),\n  array([386., 324.,  48.,  44.], dtype=float32),\n  array([256., 671.,  38.,  30.], dtype=float32),\n  array([263., 675.,  62.,  42.], dtype=float32),\n  array([ 58., 416.,  44.,  42.], dtype=float32)],\n '0-9763': [array([917., 333.,  42.,  35.], dtype=float32)],\n '1-8834': [array([536., 203.,  67.,  61.], dtype=float32),\n  array([704., 243.,  47.,  38.], dtype=float32)],\n '2-6379': [array([133., 291.,  33.,  30.], dtype=float32)],\n '0-1030': [array([1180.,  636.,   99.,   83.], dtype=float32)],\n '1-4458': [array([664., 255.,  32.,  42.], dtype=float32)],\n '0-347': [array([296., 181.,  36.,  33.], dtype=float32)],\n '1-2029': [array([773., 590.,  52.,  59.], dtype=float32)],\n '2-5798': [array([956., 675.,  70.,  44.], dtype=float32),\n  array([1127.,  553.,   73.,   75.], dtype=float32),\n  array([278., 296.,  49.,  41.], dtype=float32),\n  array([823., 649.,  68.,  70.], dtype=float32),\n  array([257., 272.,  56.,  45.], dtype=float32),\n  array([179., 268.,  55.,  43.], dtype=float32),\n  array([382., 293.,  44.,  50.], dtype=float32),\n  array([409., 169.,  26.,  23.], dtype=float32)],\n '0-1539': [array([250., 364.,  34.,  26.], dtype=float32)],\n '0-4581': [array([129., 115.,  56.,  53.], dtype=float32),\n  array([ 49., 135.,  71.,  53.], dtype=float32),\n  array([472., 241.,  44.,  45.], dtype=float32),\n  array([178.,  52.,  65.,  34.], dtype=float32)],\n '0-12240': [array([114., 564.,  52.,  46.], dtype=float32),\n  array([430., 585.,  39.,  26.], dtype=float32)],\n '0-4683': [array([583., 243.,  31.,  29.], dtype=float32)],\n '0-8943': [array([970., 376.,  36.,  32.], dtype=float32),\n  array([1027.,  435.,   34.,   30.], dtype=float32)],\n '1-4489': [array([642., 386.,  47.,  54.], dtype=float32),\n  array([267.,   0.,  54.,  33.], dtype=float32)],\n '1-4482': [array([645., 374.,  47.,  54.], dtype=float32),\n  array([275.,   9.,  51.,  44.], dtype=float32)],\n '1-6761': [array([519., 541.,  44.,  46.], dtype=float32),\n  array([226., 290.,  69.,  66.], dtype=float32)],\n '0-4832': [array([574., 113.,  41.,  28.], dtype=float32)],\n '2-5699': [array([316., 129.,  38.,  34.], dtype=float32),\n  array([275., 143.,  36.,  34.], dtype=float32)],\n '0-131': [array([666.,  24.,  30.,  32.], dtype=float32)],\n '0-11879': [array([899.,  32.,  70.,  51.], dtype=float32)],\n '0-8898': [array([935., 684.,  37.,  19.], dtype=float32)],\n '1-6905': [array([466., 653.,  71.,  65.], dtype=float32),\n  array([576., 486.,  58.,  52.], dtype=float32),\n  array([637., 414.,  57.,  50.], dtype=float32)],\n '0-4577': [array([144., 104.,  54.,  49.], dtype=float32),\n  array([ 67., 125.,  70.,  49.], dtype=float32),\n  array([470., 225.,  42.,  41.], dtype=float32),\n  array([194.,  44.,  57.,  32.], dtype=float32)],\n '1-5862': [array([221.,  69.,  45.,  39.], dtype=float32),\n  array([230., 177.,  52.,  54.], dtype=float32)],\n '1-5463': [array([431., 228.,  42.,  32.], dtype=float32),\n  array([235., 490.,  53.,  62.], dtype=float32),\n  array([368., 241.,  38.,  36.], dtype=float32),\n  array([357., 236.,  30.,  24.], dtype=float32),\n  array([457., 163.,  38.,  31.], dtype=float32),\n  array([386., 418.,  30.,  32.], dtype=float32),\n  array([808., 494.,  50.,  33.], dtype=float32)],\n '1-4107': [array([870.,  47.,  47.,  31.], dtype=float32),\n  array([508., 102.,  25.,  26.], dtype=float32)],\n '1-6260': [array([621., 350.,  68.,  66.], dtype=float32)],\n '1-4439': [array([622.,  17.,  32.,  42.], dtype=float32)],\n '1-2025': [array([783., 518.,  49.,  59.], dtype=float32)],\n '0-391': [array([1025.,  535.,   44.,   53.], dtype=float32)],\n '0-9261': [array([981., 298.,  39.,  36.], dtype=float32)],\n '2-5760': [array([578., 336.,  64.,  52.], dtype=float32),\n  array([589., 460.,  56.,  44.], dtype=float32),\n  array([676., 465.,  64.,  54.], dtype=float32),\n  array([623., 496.,  51.,  52.], dtype=float32),\n  array([930., 158.,  52.,  47.], dtype=float32),\n  array([1056.,   90.,   57.,   46.], dtype=float32),\n  array([998., 186.,  72.,  55.], dtype=float32),\n  array([437., 476.,  54.,  46.], dtype=float32),\n  array([476., 487.,  42.,  29.], dtype=float32),\n  array([836., 183.,  61.,  55.], dtype=float32),\n  array([316., 249.,  61.,  47.], dtype=float32),\n  array([1118.,  457.,   62.,   61.], dtype=float32),\n  array([959., 410.,  60.,  51.], dtype=float32),\n  array([676., 637.,  50.,  49.], dtype=float32),\n  array([675., 532.,  66.,  49.], dtype=float32)],\n '0-12314': [array([1028.,  637.,   42.,   35.], dtype=float32)],\n '0-1909': [array([1003.,  125.,   62.,   51.], dtype=float32),\n  array([636., 299.,  50.,  42.], dtype=float32)],\n '1-5691': [array([976., 372.,  54.,  38.], dtype=float32),\n  array([933., 354.,  39.,  37.], dtype=float32),\n  array([753., 476.,  48.,  44.], dtype=float32),\n  array([492., 576.,  38.,  27.], dtype=float32)],\n '1-9114': [array([628., 321.,  42.,  47.], dtype=float32),\n  array([893., 497.,  65.,  61.], dtype=float32),\n  array([853., 413.,  49.,  44.], dtype=float32),\n  array([749., 666.,  57.,  53.], dtype=float32),\n  array([625., 669.,  57.,  48.], dtype=float32),\n  array([402., 162.,  46.,  48.], dtype=float32),\n  array([687., 159.,  38.,  39.], dtype=float32),\n  array([639.,  65.,  44.,  32.], dtype=float32),\n  array([614.,  72.,  40.,  33.], dtype=float32),\n  array([830., 164.,  56.,  50.], dtype=float32),\n  array([537., 154.,  26.,  25.], dtype=float32),\n  array([357.,  85.,  33.,  25.], dtype=float32),\n  array([405., 323.,  28.,  30.], dtype=float32),\n  array([677.,  69.,  46.,  31.], dtype=float32),\n  array([314., 105.,  24.,  21.], dtype=float32),\n  array([650., 356.,  27.,  42.], dtype=float32),\n  array([1129.,  689.,   59.,   30.], dtype=float32),\n  array([1140.,  674.,   69.,   36.], dtype=float32)],\n '1-4219': [array([249., 569.,  46.,  42.], dtype=float32),\n  array([  1., 645.,  49.,  43.], dtype=float32),\n  array([231., 602.,  55.,  48.], dtype=float32)],\n '1-8905': [array([829., 357.,  40.,  42.], dtype=float32),\n  array([374., 582.,  31.,  37.], dtype=float32)],\n '1-6774': [array([368., 186.,  39.,  34.], dtype=float32),\n  array([257., 295.,  50.,  47.], dtype=float32)],\n '1-480': [array([874., 546.,  30.,  39.], dtype=float32)],\n '1-6876': [array([515., 511.,  71.,  68.], dtype=float32),\n  array([613., 364.,  55.,  51.], dtype=float32),\n  array([666., 300.,  57.,  50.], dtype=float32)],\n '0-12243': [array([101., 581.,  54.,  47.], dtype=float32),\n  array([433., 590.,  39.,  26.], dtype=float32)],\n '2-5946': [array([227., 457.,  28.,  29.], dtype=float32),\n  array([252., 474.,  29.,  32.], dtype=float32)],\n '0-9570': [array([740., 696.,  43.,  23.], dtype=float32)],\n '1-5894': [array([ 51., 239.,  45.,  39.], dtype=float32),\n  array([ 52., 357.,  68.,  60.], dtype=float32)],\n '1-9024': [array([416., 237.,  44.,  29.], dtype=float32)],\n '2-5829': [array([976., 304.,  62.,  52.], dtype=float32),\n  array([214., 608.,  72.,  60.], dtype=float32),\n  array([735.,   1.,  50.,  28.], dtype=float32),\n  array([180., 562.,  89.,  77.], dtype=float32),\n  array([448., 433.,  62.,  67.], dtype=float32),\n  array([ 90., 574.,  69.,  48.], dtype=float32),\n  array([352., 620.,  58.,  63.], dtype=float32)],\n '0-12297': [array([944., 485.,  31.,  25.], dtype=float32)],\n '1-9086': [array([477., 571.,  28.,  30.], dtype=float32),\n  array([605., 130.,  34.,  27.], dtype=float32),\n  array([832., 271.,  47.,  39.], dtype=float32),\n  array([706., 401.,  52.,  39.], dtype=float32),\n  array([602., 417.,  51.,  50.], dtype=float32),\n  array([654., 454.,  40.,  35.], dtype=float32),\n  array([626., 471.,  52.,  50.], dtype=float32),\n  array([417., 123.,  27.,  20.], dtype=float32)],\n '1-856': [array([1150.,  302.,   82.,   84.], dtype=float32)],\n '0-9895': [array([843., 635.,  36.,  37.], dtype=float32),\n  array([751., 236.,  35.,  40.], dtype=float32)],\n '0-1912': [array([1043.,  159.,   64.,   56.], dtype=float32),\n  array([666., 343.,  51.,  44.], dtype=float32)],\n '1-4449': [array([645., 309.,  32.,  42.], dtype=float32)],\n '1-5303': [array([635., 568.,  84.,  80.], dtype=float32)],\n '0-9499': [array([ 39., 106.,  63.,  38.], dtype=float32)],\n '0-9911': [array([747., 358.,  35.,  40.], dtype=float32)],\n '0-1921': [array([1146.,  290.,   82.,   50.], dtype=float32),\n  array([741., 506.,  51.,  44.], dtype=float32)],\n '1-9300': [array([338., 376.,  45.,  32.], dtype=float32),\n  array([365., 451.,  37.,  45.], dtype=float32)],\n '0-4699': [array([521., 325.,  41.,  42.], dtype=float32)],\n '1-6622': [array([684., 514.,  70.,  68.], dtype=float32)],\n '1-5448': [array([301., 200.,  38.,  42.], dtype=float32),\n  array([495., 481.,  53.,  58.], dtype=float32)],\n '1-4538': [array([246., 456.,  75.,  66.], dtype=float32),\n  array([158., 479.,  54.,  37.], dtype=float32)],\n '0-9932': [array([780., 603.,  40.,  55.], dtype=float32)],\n '0-346': [array([300., 176.,  36.,  33.], dtype=float32)],\n '0-9464': [array([324., 585.,  55.,  36.], dtype=float32),\n  array([635., 557.,  40.,  35.], dtype=float32)],\n '0-4690': [array([551., 277.,  37.,  34.], dtype=float32)],\n '1-6888': [array([507., 554.,  71.,  68.], dtype=float32),\n  array([613., 401.,  55.,  51.], dtype=float32),\n  array([670., 335.,  57.,  50.], dtype=float32)],\n '0-9662': [array([312., 617.,  32.,  33.], dtype=float32),\n  array([170., 353.,  55.,  52.], dtype=float32),\n  array([166., 306.,  44.,  43.], dtype=float32),\n  array([ 43., 201.,  61.,  51.], dtype=float32),\n  array([808., 322.,  35.,  37.], dtype=float32)],\n '1-9128': [array([586., 420.,  45.,  50.], dtype=float32),\n  array([861., 623.,  68.,  71.], dtype=float32),\n  array([823., 536.,  49.,  50.], dtype=float32),\n  array([350., 171.,  56.,  53.], dtype=float32),\n  array([661., 226.,  50.,  49.], dtype=float32),\n  array([619., 103.,  48.,  36.], dtype=float32),\n  array([592., 112.,  40.,  33.], dtype=float32),\n  array([600., 148.,  36.,  23.], dtype=float32),\n  array([830., 246.,  61.,  50.], dtype=float32),\n  array([314.,  81.,  38.,  29.], dtype=float32),\n  array([331., 411.,  35.,  40.], dtype=float32),\n  array([662., 120.,  48.,  36.], dtype=float32),\n  array([1042.,  171.,   57.,   42.], dtype=float32),\n  array([256., 100.,  39.,  31.], dtype=float32),\n  array([603., 460.,  32.,  44.], dtype=float32)],\n '2-6389': [array([ 56., 339.,  45.,  40.], dtype=float32)],\n '0-9448': [array([827., 576.,  42.,  55.], dtype=float32),\n  array([396., 352.,  51.,  32.], dtype=float32)],\n '0-108': [array([646.,  32.,  21.,  23.], dtype=float32)],\n '0-12181': [array([437., 208.,  31.,  26.], dtype=float32)],\n '1-5808': [array([319.,  48.,  26.,  30.], dtype=float32)],\n '1-4117': [array([874.,  73.,  52.,  37.], dtype=float32),\n  array([585.,   0.,  34.,  26.], dtype=float32),\n  array([485., 102.,  30.,  29.], dtype=float32)],\n '2-5703': [array([343., 168.,  38.,  34.], dtype=float32),\n  array([299., 182.,  36.,  34.], dtype=float32)],\n '0-4241': [array([634., 323.,  42.,  28.], dtype=float32)],\n '0-1560': [array([ 30., 508.,  54.,  30.], dtype=float32)],\n '2-5689': [array([281., 117.,  34.,  31.], dtype=float32),\n  array([239., 129.,  36.,  34.], dtype=float32)],\n '0-9525': [array([ 14., 304.,  64.,  42.], dtype=float32)],\n '0-4679': [array([602., 224.,  28.,  26.], dtype=float32)],\n '1-5649': [array([624.,  67.,  34.,  29.], dtype=float32)],\n '2-5853': [array([783., 345.,  50.,  39.], dtype=float32)],\n '1-851': [array([1108.,  208.,   78.,   73.], dtype=float32)],\n '1-626': [array([575., 399., 223., 203.], dtype=float32)],\n '1-5362': [array([337., 254.,  51.,  55.], dtype=float32),\n  array([230., 345.,  40.,  39.], dtype=float32)],\n '0-19': [array([556., 214.,  50.,  32.], dtype=float32)],\n '1-6600': [array([522.,  44.,  38.,  40.], dtype=float32)],\n '1-5260': [array([561., 117.,  40.,  42.], dtype=float32)],\n '0-4600': [array([108., 151.,  63.,  72.], dtype=float32),\n  array([ 20., 199.,  75.,  61.], dtype=float32),\n  array([527., 311.,  55.,  62.], dtype=float32),\n  array([173.,  65.,  72.,  38.], dtype=float32)],\n '1-5245': [array([633., 474.,  69.,  82.], dtype=float32),\n  array([628.,   0.,  40.,  29.], dtype=float32)],\n '1-5531': [array([189., 578.,  77.,  80.], dtype=float32),\n  array([287., 545.,  51.,  57.], dtype=float32)],\n '0-9756': [array([183., 639.,  71.,  62.], dtype=float32)],\n '1-9154': [array([456., 109.,  38.,  41.], dtype=float32),\n  array([255., 349.,  62.,  52.], dtype=float32),\n  array([596., 527.,  57.,  64.], dtype=float32),\n  array([562., 325.,  57.,  59.], dtype=float32),\n  array([520., 338.,  58.,  56.], dtype=float32),\n  array([515., 381.,  68.,  61.], dtype=float32),\n  array([807., 571.,  82.,  72.], dtype=float32),\n  array([376., 547.,  39.,  48.], dtype=float32),\n  array([321., 408.,  42.,  40.], dtype=float32),\n  array([213., 230.,  49.,  36.], dtype=float32),\n  array([603., 364.,  70.,  57.], dtype=float32),\n  array([1082.,  479.,   71.,   57.], dtype=float32),\n  array([149., 246.,  39.,  31.], dtype=float32),\n  array([410.,  80.,  35.,  32.], dtype=float32)],\n '0-2311': [array([445., 393.,  42.,  36.], dtype=float32)],\n '0-4543': [array([191.,  28.,  40.,  33.], dtype=float32),\n  array([137.,  47.,  45.,  26.], dtype=float32)],\n '0-12204': [array([316., 291.,  34.,  31.], dtype=float32),\n  array([531., 358.,  26.,  18.], dtype=float32)],\n '0-165': [array([596., 393.,  58.,  62.], dtype=float32)],\n '1-4442': [array([639., 108.,  32.,  42.], dtype=float32)],\n '0-4654': [array([669.,  88.,  29.,  26.], dtype=float32)],\n '0-8914': [array([530., 479.,  30.,  24.], dtype=float32)],\n '0-9625': [array([336., 402.,  19.,  17.], dtype=float32),\n  array([219., 269.,  43.,  33.], dtype=float32),\n  array([225., 231.,  34.,  27.], dtype=float32)],\n '1-4089': [array([524.,  28.,  19.,  20.], dtype=float32)],\n '2-5941': [array([237., 449.,  28.,  29.], dtype=float32),\n  array([264., 465.,  29.,  32.], dtype=float32)],\n '1-8813': [array([593.,  93.,  36.,  34.], dtype=float32)],\n '1-5644': [array([620.,  55.,  34.,  29.], dtype=float32)],\n '1-858': [array([1167.,  339.,   84.,   89.], dtype=float32)],\n '0-5709': [array([195., 458.,  34.,  36.], dtype=float32),\n  array([290., 671.,  45.,  38.], dtype=float32)],\n '1-9005': [array([426., 144.,  34.,  27.], dtype=float32)],\n '1-4182': [array([381., 188.,  36.,  26.], dtype=float32),\n  array([285., 591.,  24.,  25.], dtype=float32),\n  array([580., 282.,  43.,  51.], dtype=float32),\n  array([207., 236.,  30.,  25.], dtype=float32),\n  array([373., 201.,  38.,  37.], dtype=float32),\n  array([692., 449.,  64.,  68.], dtype=float32),\n  array([170., 316.,  64.,  46.], dtype=float32),\n  array([735., 419.,  39.,  59.], dtype=float32),\n  array([264., 284.,  26.,  28.], dtype=float32),\n  array([ 46., 438.,  35.,  40.], dtype=float32),\n  array([ 79., 487.,  31.,  32.], dtype=float32),\n  array([580., 620.,  34.,  35.], dtype=float32)],\n '1-4526': [array([276., 394.,  68.,  60.], dtype=float32),\n  array([195., 424.,  50.,  33.], dtype=float32)],\n '0-88': [array([351., 429.,  83.,  73.], dtype=float32)],\n '1-9320': [array([623., 507.,  41.,  46.], dtype=float32),\n  array([305., 551.,  56.,  40.], dtype=float32),\n  array([339., 643.,  47.,  49.], dtype=float32)],\n '1-1936': [array([971., 639.,  36.,  41.], dtype=float32)],\n '1-8922': [array([897., 531.,  52.,  56.], dtype=float32)],\n '0-2310': [array([451., 388.,  42.,  36.], dtype=float32)],\n '1-4146': [array([1093.,  256.,   68.,   53.], dtype=float32),\n  array([346., 292.,  21.,  23.], dtype=float32),\n  array([592.,  28.,  30.,  32.], dtype=float32),\n  array([632.,  90.,  42.,  46.], dtype=float32),\n  array([676., 139.,  60.,  63.], dtype=float32),\n  array([248.,  93.,  57.,  35.], dtype=float32),\n  array([719., 129.,  23.,  46.], dtype=float32),\n  array([326.,  69.,  22.,  29.], dtype=float32),\n  array([154., 180.,  29.,  36.], dtype=float32),\n  array([185., 223.,  25.,  27.], dtype=float32),\n  array([589., 303.,  31.,  30.], dtype=float32)],\n '0-4566': [array([173.,  86.,  50.,  43.], dtype=float32),\n  array([110., 109.,  56.,  40.], dtype=float32),\n  array([467., 199.,  36.,  30.], dtype=float32),\n  array([225.,  39.,  46.,  29.], dtype=float32)],\n '1-5890': [array([ 78., 230.,  45.,  39.], dtype=float32),\n  array([ 80., 348.,  66.,  52.], dtype=float32)],\n '2-6395': [array([ 33., 468.,  45.,  40.], dtype=float32)],\n '1-1996': [array([922., 117.,  44.,  51.], dtype=float32)],\n '1-1940': [array([991., 694.,  36.,  25.], dtype=float32)],\n '1-5554': [array([235., 670.,  68.,  49.], dtype=float32)],\n '2-5489': [array([346., 371.,  34.,  35.], dtype=float32),\n  array([  0., 111.,  25.,  21.], dtype=float32)],\n '0-9657': [array([309., 598.,  29.,  32.], dtype=float32),\n  array([171., 356.,  52.,  49.], dtype=float32),\n  array([167., 308.,  44.,  43.], dtype=float32),\n  array([ 49., 211.,  61.,  51.], dtype=float32),\n  array([790., 332.,  35.,  37.], dtype=float32)],\n '1-9173': [array([460., 280.,  45.,  40.], dtype=float32),\n  array([194., 573.,  82.,  62.], dtype=float32),\n  array([552., 627.,  83.,  75.], dtype=float32),\n  array([506., 642.,  70.,  68.], dtype=float32),\n  array([267., 676.,  46.,  43.], dtype=float32),\n  array([165., 417.,  57.,  48.], dtype=float32),\n  array([ 98., 447.,  40.,  34.], dtype=float32),\n  array([411., 243.,  35.,  33.], dtype=float32)],\n '1-6775': [array([455., 640.,  39.,  36.], dtype=float32),\n  array([384., 189.,  39.,  34.], dtype=float32),\n  array([272., 296.,  46.,  51.], dtype=float32)],\n '0-53': [array([540., 258., 110., 104.], dtype=float32),\n  array([649., 431.,  95.,  56.], dtype=float32)],\n '1-8843': [array([498., 251.,  60.,  53.], dtype=float32),\n  array([676., 301.,  55.,  46.], dtype=float32),\n  array([643.,  52.,  21.,  22.], dtype=float32)],\n '0-11870': [array([863.,   7.,  49.,  42.], dtype=float32)],\n '0-81': [array([390., 316.,  70.,  65.], dtype=float32)],\n '1-5687': [array([982., 325.,  42.,  32.], dtype=float32),\n  array([933., 306.,  37.,  36.], dtype=float32),\n  array([759., 430.,  46.,  41.], dtype=float32),\n  array([502., 533.,  38.,  27.], dtype=float32)],\n '2-5910': [array([570., 520.,  42.,  43.], dtype=float32),\n  array([569., 567.,  39.,  38.], dtype=float32),\n  array([551., 549.,  36.,  33.], dtype=float32)],\n '2-5785': [array([560., 573.,  56.,  61.], dtype=float32),\n  array([590., 696.,  57.,  24.], dtype=float32),\n  array([995., 338.,  70.,  60.], dtype=float32),\n  array([1160.,  243.,   67.,   66.], dtype=float32),\n  array([1091.,  386.,   84.,   73.], dtype=float32),\n  array([214., 464.,  79.,  76.], dtype=float32),\n  array([1011.,  644.,  102.,   72.], dtype=float32),\n  array([363.,  68.,  57.,  50.], dtype=float32),\n  array([298.,  72.,  58.,  34.], dtype=float32),\n  array([485.,  94.,  38.,  41.], dtype=float32)],\n '2-7976': [array([466., 445.,  35.,  25.], dtype=float32)],\n '0-235': [array([843., 190.,  26.,  23.], dtype=float32)],\n '2-5911': [array([566., 531.,  42.,  44.], dtype=float32),\n  array([567., 578.,  39.,  38.], dtype=float32),\n  array([546., 562.,  36.,  33.], dtype=float32)],\n '0-12239': [array([118., 558.,  52.,  46.], dtype=float32),\n  array([429., 583.,  39.,  26.], dtype=float32)],\n '1-6603': [array([531., 105.,  41.,  42.], dtype=float32)],\n '1-8825': [array([567., 196.,  48.,  47.], dtype=float32),\n  array([717., 233.,  44.,  36.], dtype=float32)],\n '0-9661': [array([311., 613.,  32.,  33.], dtype=float32),\n  array([170., 353.,  54.,  52.], dtype=float32),\n  array([166., 306.,  44.,  43.], dtype=float32),\n  array([ 44., 203.,  61.,  51.], dtype=float32),\n  array([804., 324.,  35.,  37.], dtype=float32)],\n '1-4756': [array([152.,  66.,  53.,  48.], dtype=float32)],\n '1-4100': [array([513.,  53.,  26.,  21.], dtype=float32)],\n '0-82': [array([385., 333.,  71.,  66.], dtype=float32)],\n '0-1898': [array([865.,  78.,  62.,  47.], dtype=float32),\n  array([534., 204.,  43.,  35.], dtype=float32)],\n '1-5368': [array([274., 299.,  33.,  30.], dtype=float32),\n  array([298., 308.,  46.,  49.], dtype=float32)],\n '1-4049': [array([271., 228.,  39.,  24.], dtype=float32)],\n '0-4736': [array([168.,  68.,  58.,  54.], dtype=float32)],\n '2-5830': [array([984., 322.,  64.,  49.], dtype=float32),\n  array([1191.,  393.,   67.,   71.], dtype=float32),\n  array([212., 625.,  72.,  60.], dtype=float32),\n  array([739.,  10.,  50.,  30.], dtype=float32),\n  array([179., 578.,  89.,  77.], dtype=float32),\n  array([449., 451.,  62.,  67.], dtype=float32),\n  array([ 92., 590.,  65.,  52.], dtype=float32),\n  array([355., 637.,  58.,  63.], dtype=float32)],\n '1-4042': [array([309., 136.,  34.,  28.], dtype=float32)],\n '0-4734': [array([172.,  55.,  58.,  54.], dtype=float32)],\n '0-4806': [array([627., 109.,  32.,  21.], dtype=float32)],\n '0-4756': [array([ 0., 53., 78., 52.], dtype=float32),\n  array([127.,  59.,  91.,  41.], dtype=float32),\n  array([ 84., 229.,  65.,  61.], dtype=float32)],\n '2-5413': [array([184., 378.,  49.,  47.], dtype=float32)],\n '1-5405': [array([332., 422.,  36.,  48.], dtype=float32),\n  array([346., 530.,  51.,  57.], dtype=float32),\n  array([241., 584.,  44.,  39.], dtype=float32),\n  array([677.,  93.,  26.,  38.], dtype=float32)],\n '0-9818': [array([679., 452.,  26.,  24.], dtype=float32)],\n '1-8930': [array([905., 655.,  52.,  56.], dtype=float32)],\n '1-5252': [array([532., 593.,  75.,  84.], dtype=float32),\n  array([570.,  48.,  40.,  42.], dtype=float32)],\n '2-5400': [array([176., 178.,  49.,  47.], dtype=float32)],\n '0-8210': [array([653., 178.,  26.,  23.], dtype=float32)],\n '0-4653': [array([670.,  83.,  29.,  26.], dtype=float32)],\n '1-5230': [array([709., 413.,  58.,  71.], dtype=float32)],\n '2-5823': [array([927., 210.,  69.,  49.], dtype=float32),\n  array([1108.,  260.,   73.,   63.], dtype=float32),\n  array([221., 514.,  63.,  58.], dtype=float32),\n  array([183., 469.,  89.,  77.], dtype=float32),\n  array([438., 343.,  62.,  67.], dtype=float32),\n  array([ 92., 477.,  59.,  44.], dtype=float32),\n  array([347., 525.,  52.,  57.], dtype=float32)],\n '0-4255': [array([617., 265.,  49.,  39.], dtype=float32)],\n '1-8891': [array([833., 227.,  40.,  36.], dtype=float32),\n  array([423., 452.,  30.,  27.], dtype=float32)],\n '0-119': [array([655.,   2.,  29.,  30.], dtype=float32)],\n '1-619': [array([583., 153., 180., 152.], dtype=float32)],\n '1-8934': [array([868., 673.,  52.,  46.], dtype=float32)],\n '1-5870': [array([207., 162.,  45.,  39.], dtype=float32),\n  array([214., 265.,  56.,  57.], dtype=float32)],\n '0-4536': [array([187.,  10.,  41.,  33.], dtype=float32),\n  array([135.,  27.,  42.,  28.], dtype=float32)],\n '1-3891': [array([148.,   0.,  50.,  21.], dtype=float32)],\n '1-5289': [array([564., 349.,  67.,  64.], dtype=float32)],\n '0-4506': [array([142., 466.,  52.,  32.], dtype=float32),\n  array([  3., 538.,  63.,  39.], dtype=float32)],\n '1-9203': [array([328., 587.,  57.,  44.], dtype=float32),\n  array([467., 621.,  36.,  39.], dtype=float32),\n  array([272., 403.,  38.,  31.], dtype=float32),\n  array([266., 257.,  54.,  38.], dtype=float32),\n  array([271., 481.,  30.,  27.], dtype=float32)],\n '1-9325': [array([606., 584.,  41.,  46.], dtype=float32),\n  array([272., 638.,  59.,  40.], dtype=float32)],\n '1-473': [array([844., 445.,  27.,  28.], dtype=float32)],\n '0-11924': [array([1089.,  572.,   72.,   83.], dtype=float32)],\n '0-8932': [array([943., 332.,  33.,  29.], dtype=float32),\n  array([572., 635.,  39.,  34.], dtype=float32)],\n '1-4509': [array([255., 262.,  63.,  59.], dtype=float32)],\n '1-5689': [array([981., 359.,  46.,  30.], dtype=float32),\n  array([932., 343.,  39.,  37.], dtype=float32),\n  array([760., 464.,  48.,  44.], dtype=float32),\n  array([497., 559.,  38.,  27.], dtype=float32)],\n '2-4723': [array([206., 526.,  31.,  37.], dtype=float32)],\n '0-9431': [array([829., 417.,  33.,  40.], dtype=float32)],\n '0-9326': [array([818.,  68.,  56.,  45.], dtype=float32)],\n '0-12269': [array([537., 683.,  44.,  35.], dtype=float32),\n  array([737., 362.,  27.,  21.], dtype=float32)],\n '2-5700': [array([321., 139.,  38.,  34.], dtype=float32),\n  array([281., 153.,  36.,  34.], dtype=float32)],\n '0-4486': [array([127., 320.,  48.,  23.], dtype=float32)],\n '0-12258': [array([102., 682.,  56.,  37.], dtype=float32),\n  array([480., 622.,  43.,  34.], dtype=float32)],\n '0-9490': [array([45., 29., 63., 38.], dtype=float32)],\n '1-3924': [array([ 72., 256.,  67.,  44.], dtype=float32),\n  array([ 15., 308.,  73.,  50.], dtype=float32),\n  array([ 36., 293.,  33.,  25.], dtype=float32),\n  array([486., 185.,  30.,  45.], dtype=float32)],\n '1-5550': [array([278., 660.,  47.,  59.], dtype=float32)],\n '0-169': [array([583., 454.,  62.,  69.], dtype=float32)],\n '0-8241': [array([700., 262.,  34.,  33.], dtype=float32)],\n '1-1939': [array([984., 681.,  36.,  38.], dtype=float32)],\n '0-9430': [array([830., 409.,  33.,  40.], dtype=float32)],\n '2-5855': [array([788., 373.,  54.,  32.], dtype=float32),\n  array([679., 289.,  23.,  26.], dtype=float32),\n  array([660., 280.,  25.,  27.], dtype=float32)],\n '1-488': [array([921., 671.,  33.,  39.], dtype=float32)],\n '1-6267': [array([648., 520.,  77.,  70.], dtype=float32)],\n '0-4230': [array([634., 266.,  40.,  23.], dtype=float32)],\n '1-4465': [array([683., 272.,  33.,  43.], dtype=float32)],\n '0-9651': [array([307., 570.,  26.,  29.], dtype=float32),\n  array([173., 353.,  51.,  45.], dtype=float32),\n  array([178., 311.,  39.,  31.], dtype=float32),\n  array([ 65., 217.,  58.,  50.], dtype=float32),\n  array([771., 342.,  24.,  30.], dtype=float32)],\n '1-9353': [array([569., 344.,  73.,  51.], dtype=float32),\n  array([578., 267.,  45.,  40.], dtype=float32)],\n '0-987': [array([857., 278.,  64.,  42.], dtype=float32)],\n '1-5458': [array([448., 136.,  46.,  36.], dtype=float32),\n  array([260., 386.,  49.,  53.], dtype=float32),\n  array([386., 157.,  38.,  35.], dtype=float32),\n  array([473.,  77.,  38.,  31.], dtype=float32)],\n '0-8219': [array([664., 212.,  30.,  26.], dtype=float32)],\n '0-9884': [array([834., 547.,  35.,  33.], dtype=float32),\n  array([754., 190.,  37.,  34.], dtype=float32)],\n '0-12251': [array([ 96., 617.,  56.,  49.], dtype=float32),\n  array([449., 594.,  40.,  28.], dtype=float32)],\n '0-8273': [array([830., 496.,  50.,  48.], dtype=float32)],\n '1-8851': [array([526., 403.,  68.,  65.], dtype=float32),\n  array([720., 455.,  55.,  51.], dtype=float32),\n  array([678., 162.,  29.,  28.], dtype=float32)],\n '0-349': [array([288., 190.,  36.,  35.], dtype=float32)],\n '0-9447': [array([825., 563.,  42.,  55.], dtype=float32)],\n '0-4755': [array([ 0., 39., 82., 52.], dtype=float32),\n  array([129.,  46.,  91.,  41.], dtype=float32),\n  array([ 89., 213.,  63.,  59.], dtype=float32)],\n '0-2344': [array([167., 681.,  58.,  38.], dtype=float32)],\n '1-9399': [array([232., 574.,  53.,  61.], dtype=float32)],\n '1-9217': [array([328., 570.,  48.,  50.], dtype=float32),\n  array([231., 486.,  38.,  31.], dtype=float32),\n  array([228., 317.,  51.,  38.], dtype=float32),\n  array([398., 381.,  32.,  27.], dtype=float32),\n  array([232., 570.,  30.,  27.], dtype=float32)],\n '1-6725': [array([575., 342.,  40.,  41.], dtype=float32)],\n '0-885': [array([714., 620.,  58.,  53.], dtype=float32)],\n '1-5296': [array([583., 457.,  82.,  75.], dtype=float32)],\n '0-8966': [array([1068.,  655.,   36.,   32.], dtype=float32)],\n '0-9716': [array([482., 261.,  46.,  37.], dtype=float32)],\n '0-4609': [array([ 75., 207.,  75.,  83.], dtype=float32),\n  array([  0., 259.,  64.,  65.], dtype=float32),\n  array([555., 367.,  70.,  79.], dtype=float32),\n  array([141.,  93.,  81.,  48.], dtype=float32)],\n '1-8880': [array([668., 565.,  45.,  49.], dtype=float32),\n  array([423., 360.,  30.,  24.], dtype=float32)],\n '0-8915': [array([531., 488.,  30.,  24.], dtype=float32)],\n '1-3955': [array([374., 479.,  44.,  74.], dtype=float32)],\n '0-9462': [array([329., 555.,  67.,  32.], dtype=float32)],\n '0-9393': [array([557., 470.,  87.,  78.], dtype=float32)],\n '1-5223': [array([758., 303.,  50.,  63.], dtype=float32)],\n '1-9033': [array([414., 255.,  44.,  29.], dtype=float32)],\n '2-5932': [array([292., 405.,  27.,  28.], dtype=float32),\n  array([312., 417.,  29.,  31.], dtype=float32)],\n '1-8639': [array([314.,  80.,  27.,  20.], dtype=float32)],\n '1-5308': [array([706., 668.,  74.,  51.], dtype=float32),\n  array([300., 180.,  34.,  32.], dtype=float32)],\n '0-352': [array([269., 210.,  38.,  35.], dtype=float32)],\n '0-4501': [array([167., 425.,  47.,  31.], dtype=float32),\n  array([ 38., 484.,  58.,  33.], dtype=float32)],\n '0-8250': [array([721., 298.,  42.,  35.], dtype=float32)],\n '1-4438': [array([620.,   1.,  32.,  42.], dtype=float32)],\n '1-9348': [array([581., 300.,  71.,  48.], dtype=float32),\n  array([591., 232.,  45.,  40.], dtype=float32)],\n '1-4238': [array([326., 383.,  44.,  36.], dtype=float32),\n  array([530., 445.,  41.,  52.], dtype=float32)],\n '0-8888': [array([916., 649.,  37.,  22.], dtype=float32)],\n '1-4081': [array([  0., 514.,  36.,  32.], dtype=float32),\n  array([547., 102.,  18.,  16.], dtype=float32)],\n '1-5898': [array([ 20., 264.,  53.,  37.], dtype=float32),\n  array([ 31., 380.,  71.,  54.], dtype=float32)],\n '2-6356': [array([208., 108.,  33.,  28.], dtype=float32)],\n '1-3905': [array([166.,  87.,  56.,  34.], dtype=float32),\n  array([121., 122.,  58.,  42.], dtype=float32)],\n '1-9345': [array([578., 258.,  70.,  48.], dtype=float32),\n  array([580., 187.,  55.,  52.], dtype=float32)],\n '0-129': [array([665.,  15.,  29.,  30.], dtype=float32)],\n '2-5736': [array([613., 164.,  46.,  28.], dtype=float32),\n  array([626., 268.,  38.,  26.], dtype=float32),\n  array([699., 259.,  45.,  29.], dtype=float32),\n  array([955.,  28.,  58.,  41.], dtype=float32),\n  array([502., 279.,  44.,  34.], dtype=float32),\n  array([202., 647.,  59.,  57.], dtype=float32),\n  array([153., 672.,  45.,  44.], dtype=float32),\n  array([493., 484.,  39.,  38.], dtype=float32),\n  array([543., 282.,  29.,  20.], dtype=float32),\n  array([823.,  45.,  51.,  45.], dtype=float32),\n  array([393., 101.,  53.,  37.], dtype=float32),\n  array([900.,  11.,  44.,  35.], dtype=float32),\n  array([1043.,  192.,   37.,   38.], dtype=float32),\n  array([934., 215.,  38.,  32.], dtype=float32),\n  array([691., 335.,  55.,  37.], dtype=float32),\n  array([701., 290.,  41.,  29.], dtype=float32)],\n '0-9922': [array([752., 473.,  36.,  50.], dtype=float32)],\n '1-5798': [array([336., 103.,  23.,  24.], dtype=float32)],\n '0-8897': [array([937., 671.,  37.,  19.], dtype=float32)],\n '1-9163': [array([474., 114.,  45.,  36.], dtype=float32),\n  array([246., 366.,  69.,  52.], dtype=float32),\n  array([605., 612.,  66.,  73.], dtype=float32),\n  array([567., 377.,  70.,  67.], dtype=float32),\n  array([524., 385.,  66.,  60.], dtype=float32),\n  array([512., 442.,  70.,  67.], dtype=float32),\n  array([823., 681.,  98.,  38.], dtype=float32),\n  array([353., 647.,  41.,  51.], dtype=float32),\n  array([313., 444.,  42.,  52.], dtype=float32),\n  array([215., 232.,  47.,  41.], dtype=float32),\n  array([610., 428.,  81.,  68.], dtype=float32),\n  array([1163.,  600.,   81.,   75.], dtype=float32),\n  array([151., 254.,  39.,  31.], dtype=float32),\n  array([427.,  75.,  35.,  33.], dtype=float32),\n  array([699., 425.,  67.,  31.], dtype=float32)],\n '0-4597': [array([101., 145.,  61.,  66.], dtype=float32),\n  array([ 16., 189.,  73.,  59.], dtype=float32),\n  array([509., 302.,  53.,  59.], dtype=float32),\n  array([173.,  66.,  69.,  37.], dtype=float32)],\n '0-4773': [array([  0., 290.,  41.,  58.], dtype=float32),\n  array([115., 256.,  96.,  53.], dtype=float32),\n  array([  8., 520.,  82.,  79.], dtype=float32)],\n '2-5423': [array([202., 391.,  49.,  47.], dtype=float32)],\n '0-4828': [array([597., 108.,  36.,  26.], dtype=float32)],\n '2-5737': [array([602., 180.,  48.,  34.], dtype=float32),\n  array([614., 284.,  38.,  30.], dtype=float32),\n  array([690., 276.,  42.,  31.], dtype=float32),\n  array([948.,  46.,  58.,  41.], dtype=float32),\n  array([490., 295.,  45.,  35.], dtype=float32),\n  array([479., 507.,  39.,  38.], dtype=float32),\n  array([531., 299.,  29.,  21.], dtype=float32),\n  array([813.,  62.,  51.,  45.], dtype=float32),\n  array([380., 114.,  53.,  37.], dtype=float32),\n  array([888.,  32.,  44.,  35.], dtype=float32),\n  array([1034.,  214.,   37.,   38.], dtype=float32),\n  array([650., 306.,  35.,  26.], dtype=float32),\n  array([924., 235.,  38.,  32.], dtype=float32),\n  array([680., 355.,  55.,  37.], dtype=float32),\n  array([690., 309.,  41.,  29.], dtype=float32)],\n '1-6892': [array([490., 595.,  71.,  68.], dtype=float32),\n  array([602., 441.,  59.,  37.], dtype=float32),\n  array([659., 369.,  57.,  50.], dtype=float32)],\n '0-139': [array([663.,  89.,  34.,  36.], dtype=float32)],\n '1-6757': [array([562., 529.,  44.,  46.], dtype=float32)],\n '1-5315': [array([420., 162.,  31.,  37.], dtype=float32),\n  array([325., 260.,  32.,  30.], dtype=float32)],\n '1-5449': [array([297., 216.,  38.,  42.], dtype=float32),\n  array([489., 501.,  53.,  58.], dtype=float32)],\n '1-5268': [array([554., 182.,  52.,  49.], dtype=float32)],\n '0-4220': [array([624., 191.,  40.,  23.], dtype=float32)],\n '2-6311': [array([380.,  78.,  21.,  20.], dtype=float32)],\n '0-4558': [array([186.,  67.,  50.,  43.], dtype=float32),\n  array([124.,  81.,  56.,  40.], dtype=float32),\n  array([462., 164.,  31.,  26.], dtype=float32),\n  array([235.,  19.,  35.,  22.], dtype=float32)],\n '1-5238': [array([694., 425.,  67.,  79.], dtype=float32)],\n '0-9314': [array([826.,   0.,  32.,  24.], dtype=float32)],\n '1-6758': [array([560., 530.,  44.,  46.], dtype=float32),\n  array([276., 283.,  69.,  66.], dtype=float32)],\n '1-9007': [array([419., 173.,  35.,  22.], dtype=float32)],\n '1-8936': [array([856., 679.,  52.,  40.], dtype=float32)],\n '1-4183': [array([378., 195.,  36.,  26.], dtype=float32),\n  array([278., 606.,  24.,  25.], dtype=float32),\n  array([577., 295.,  44.,  53.], dtype=float32),\n  array([202., 246.,  32.,  27.], dtype=float32),\n  array([368., 208.,  39.,  38.], dtype=float32),\n  array([690., 465.,  65.,  69.], dtype=float32),\n  array([164., 325.,  66.,  50.], dtype=float32),\n  array([734., 436.,  39.,  59.], dtype=float32),\n  array([259., 291.,  26.,  28.], dtype=float32),\n  array([ 37., 446.,  35.,  40.], dtype=float32),\n  array([ 71., 502.,  31.,  32.], dtype=float32),\n  array([576., 636.,  35.,  36.], dtype=float32)],\n '0-12284': [array([838., 409.,  31.,  25.], dtype=float32)],\n '1-9389': [array([352., 594.,  71.,  67.], dtype=float32),\n  array([241., 423.,  53.,  61.], dtype=float32)],\n '2-5401': [array([176., 192.,  49.,  47.], dtype=float32)],\n '1-484': [array([897., 607.,  30.,  40.], dtype=float32)],\n '0-4262': [array([591., 266.,  56.,  47.], dtype=float32)],\n '0-9520': [array([ 29., 273.,  65.,  47.], dtype=float32)],\n '2-7975': [array([471., 434.,  35.,  24.], dtype=float32)],\n '0-9812': [array([655., 444.,  26.,  24.], dtype=float32)],\n '2-5706': [array([359., 205.,  38.,  34.], dtype=float32),\n  array([317., 223.,  36.,  34.], dtype=float32)],\n '0-30': [array([518., 176.,  69.,  54.], dtype=float32)],\n '0-4586': [array([111., 126.,  56.,  53.], dtype=float32),\n  array([ 27., 148.,  73.,  58.], dtype=float32),\n  array([472., 257.,  47.,  52.], dtype=float32),\n  array([165.,  56.,  65.,  34.], dtype=float32)],\n '0-4280': [array([589., 391.,  66.,  51.], dtype=float32)],\n '0-9315': [array([824.,   0.,  40.,  31.], dtype=float32)],\n '2-5849': [array([774., 269.,  50.,  39.], dtype=float32)],\n '1-8940': [array([845., 691.,  52.,  28.], dtype=float32)],\n '0-4531': [array([189.,   8.,  44.,  28.], dtype=float32)],\n '0-103': [array([642.,  49.,  20.,  21.], dtype=float32)],\n '1-4120': [array([890.,  82.,  53.,  38.], dtype=float32),\n  array([588.,   0.,  37.,  30.], dtype=float32),\n  array([490., 108.,  30.,  29.], dtype=float32)],\n '1-4757': [array([149.,  77.,  52.,  46.], dtype=float32)],\n '0-9929': [array([769., 561.,  39.,  55.], dtype=float32)],\n '0-367': [array([114., 360.,  58.,  56.], dtype=float32)],\n '0-9837': [array([717., 449.,  30.,  25.], dtype=float32)],\n '1-5648': [array([623.,  65.,  34.,  29.], dtype=float32)],\n '0-9446': [array([825., 553.,  41.,  53.], dtype=float32)],\n '2-6412': [array([  1., 455.,  44.,  40.], dtype=float32)],\n '1-6875': [array([514., 511.,  71.,  68.], dtype=float32),\n  array([613., 366.,  55.,  51.], dtype=float32),\n  array([666., 300.,  57.,  50.], dtype=float32)],\n '1-8885': [array([643., 658.,  45.,  49.], dtype=float32),\n  array([799., 172.,  38.,  37.], dtype=float32),\n  array([399., 396.,  30.,  24.], dtype=float32)],\n '2-5449': [array([ 80., 489.,  59.,  55.], dtype=float32)],\n '1-5436': [array([150., 696.,  49.,  24.], dtype=float32),\n  array([150., 540.,  36.,  46.], dtype=float32),\n  array([151., 654.,  49.,  38.], dtype=float32),\n  array([393., 120.,  37.,  33.], dtype=float32),\n  array([182., 554.,  26.,  34.], dtype=float32),\n  array([586., 335.,  46.,  55.], dtype=float32)],\n '1-9017': [array([426., 249.,  35.,  29.], dtype=float32)],\n '0-8928': [array([924., 320.,  30.,  26.], dtype=float32),\n  array([558., 606.,  37.,  33.], dtype=float32)],\n '1-9123': [array([595., 369.,  45.,  50.], dtype=float32),\n  array([864., 564.,  61.,  57.], dtype=float32),\n  array([824., 470.,  49.,  50.], dtype=float32),\n  array([357., 148.,  52.,  48.], dtype=float32),\n  array([663., 188.,  45.,  44.], dtype=float32),\n  array([622.,  71.,  48.,  36.], dtype=float32),\n  array([594.,  81.,  40.,  33.], dtype=float32),\n  array([822., 197.,  56.,  50.], dtype=float32),\n  array([502., 179.,  26.,  25.], dtype=float32),\n  array([321.,  65.,  33.,  25.], dtype=float32),\n  array([659.,  84.,  46.,  31.], dtype=float32),\n  array([1024.,  113.,   57.,   42.], dtype=float32),\n  array([259.,  73.,  40.,  34.], dtype=float32),\n  array([613., 407.,  27.,  42.], dtype=float32)],\n '1-9167': [array([474., 169.,  45.,  40.], dtype=float32),\n  array([236., 436.,  69.,  55.], dtype=float32),\n  array([564., 454.,  83.,  75.], dtype=float32),\n  array([522., 466.,  70.,  68.], dtype=float32),\n  array([512., 526.,  71.,  78.], dtype=float32),\n  array([300., 517.,  46.,  66.], dtype=float32),\n  array([204., 295.,  48.,  42.], dtype=float32),\n  array([615., 516.,  87.,  79.], dtype=float32),\n  array([136., 320.,  39.,  31.], dtype=float32),\n  array([424., 130.,  35.,  33.], dtype=float32),\n  array([702., 508.,  82.,  39.], dtype=float32)],\n '2-6402': [array([ 22., 510.,  45.,  40.], dtype=float32)],\n '0-9710': [array([490., 226.,  43.,  35.], dtype=float32)],\n '1-8800': [array([564.,  65.,  30.,  27.], dtype=float32)],\n '1-5651': [array([626.,  97.,  34.,  29.], dtype=float32)],\n '0-364': [array([154., 316.,  52.,  54.], dtype=float32)],\n '1-9079': [array([505., 606.,  28.,  30.], dtype=float32),\n  array([626., 177.,  34.,  27.], dtype=float32),\n  array([845., 295.,  47.,  42.], dtype=float32),\n  array([732., 425.,  46.,  35.], dtype=float32),\n  array([629., 448.,  50.,  48.], dtype=float32),\n  array([685., 483.,  40.,  35.], dtype=float32),\n  array([657., 499.,  41.,  46.], dtype=float32)],\n '0-2328': [array([316., 510.,  49.,  43.], dtype=float32)],\n '2-5787': [array([534., 610.,  64.,  66.], dtype=float32),\n  array([981., 369.,  70.,  60.], dtype=float32),\n  array([1145.,  276.,   67.,   66.], dtype=float32),\n  array([1075.,  421.,   85.,   77.], dtype=float32),\n  array([862., 389.,  66.,  71.], dtype=float32),\n  array([180., 495.,  84.,  79.], dtype=float32),\n  array([998., 691.,  91.,  28.], dtype=float32),\n  array([338.,  89.,  60.,  53.], dtype=float32),\n  array([273.,  90.,  54.,  40.], dtype=float32),\n  array([461., 112.,  40.,  45.], dtype=float32),\n  array([475.,   0.,  26.,  19.], dtype=float32)],\n '0-9674': [array([307., 694.,  33.,  25.], dtype=float32),\n  array([147., 362.,  62.,  60.], dtype=float32),\n  array([145., 313.,  44.,  43.], dtype=float32),\n  array([  6., 196.,  61.,  51.], dtype=float32),\n  array([854., 329.,  35.,  33.], dtype=float32)],\n '1-9187': [array([438., 399.,  51.,  49.], dtype=float32),\n  array([118., 577.,  68.,  55.], dtype=float32),\n  array([ 40., 615.,  42.,  41.], dtype=float32),\n  array([381., 369.,  44.,  34.], dtype=float32),\n  array([490., 402.,  36.,  39.], dtype=float32),\n  array([319., 262.,  30.,  26.], dtype=float32),\n  array([314., 135.,  42.,  32.], dtype=float32)],\n '0-251': [array([897., 286.,  37.,  35.], dtype=float32)],\n '2-5748': [array([500., 304.,  50.,  36.], dtype=float32),\n  array([503., 416.,  46.,  39.], dtype=float32),\n  array([581., 417.,  59.,  46.], dtype=float32),\n  array([825., 161.,  45.,  41.], dtype=float32),\n  array([924., 114.,  45.,  35.], dtype=float32),\n  array([879., 193.,  59.,  38.], dtype=float32),\n  array([370., 427.,  50.,  39.], dtype=float32),\n  array([417., 437.,  32.,  22.], dtype=float32),\n  array([741., 186.,  51.,  45.], dtype=float32),\n  array([265., 212.,  53.,  37.], dtype=float32),\n  array([953., 393.,  51.,  44.], dtype=float32),\n  array([536., 446.,  45.,  39.], dtype=float32),\n  array([837., 385.,  52.,  42.], dtype=float32),\n  array([569., 535.,  56.,  40.], dtype=float32),\n  array([579., 465.,  51.,  39.], dtype=float32)],\n '0-11878': [array([898.,  32.,  61.,  42.], dtype=float32)],\n '1-8643': [array([295.,  70.,  33.,  27.], dtype=float32)],\n '0-9440': [array([826., 495.,  36.,  45.], dtype=float32)],\n '1-5893': [array([ 57., 237.,  45.,  39.], dtype=float32),\n  array([ 58., 358.,  70.,  55.], dtype=float32)],\n '1-9317': [array([292., 510.,  56.,  40.], dtype=float32),\n  array([323., 599.,  40.,  44.], dtype=float32)],\n '0-9672': [array([311., 675.,  33.,  34.], dtype=float32),\n  array([151., 355.,  60.,  59.], dtype=float32),\n  array([151., 306.,  44.,  43.], dtype=float32),\n  array([ 13., 196.,  61.,  51.], dtype=float32),\n  array([846., 323.,  35.,  33.], dtype=float32)],\n '0-9545': [array([720., 538.,  40.,  31.], dtype=float32)],\n '2-5956': [array([237., 615.,  28.,  29.], dtype=float32),\n  array([258., 635.,  29.,  32.], dtype=float32)],\n '0-331': [array([325., 183.,  35.,  25.], dtype=float32)],\n '1-3923': [array([ 80., 262.,  67.,  44.], dtype=float32),\n  array([ 22., 315.,  73.,  50.], dtype=float32),\n  array([ 47., 296.,  33.,  25.], dtype=float32),\n  array([489., 191.,  30.,  45.], dtype=float32)],\n '2-5404': [array([176., 231.,  49.,  47.], dtype=float32)],\n '0-969': [array([794., 170.,  44.,  31.], dtype=float32)],\n '1-3956': [array([363., 492.,  46.,  75.], dtype=float32)],\n '2-5472': [array([347., 393.,  34.,  35.], dtype=float32)],\n '0-9334': [array([807., 112.,  56.,  45.], dtype=float32)],\n '1-8802': [array([562.,  86.,  31.,  29.], dtype=float32)],\n '2-5476': [array([343., 405.,  34.,  35.], dtype=float32)],\n '0-128': [array([664.,  12.,  29.,  30.], dtype=float32)],\n '2-5707': [array([363., 219.,  38.,  34.], dtype=float32),\n  array([321., 236.,  36.,  34.], dtype=float32),\n  array([596.,  99.,  28.,  25.], dtype=float32)],\n '0-4824': [array([613., 104.,  33.,  24.], dtype=float32)],\n '0-9658': [array([309., 602.,  30.,  32.], dtype=float32),\n  array([171., 355.,  53.,  49.], dtype=float32),\n  array([167., 308.,  44.,  43.], dtype=float32),\n  array([ 48., 209.,  61.,  51.], dtype=float32),\n  array([794., 330.,  35.,  37.], dtype=float32)],\n '0-121': [array([658.,   3.,  29.,  30.], dtype=float32)],\n '0-9678': [array([131., 384.,  64.,  61.], dtype=float32),\n  array([133., 334.,  44.,  43.], dtype=float32),\n  array([  0., 208.,  49.,  51.], dtype=float32),\n  array([869., 346.,  35.,  33.], dtype=float32)],\n '1-4114': [array([869.,  85.,  48.,  34.], dtype=float32),\n  array([575.,   1.,  44.,  46.], dtype=float32),\n  array([491., 121.,  26.,  27.], dtype=float32)],\n '1-9207': [array([390., 670.,  57.,  49.], dtype=float32),\n  array([358., 502.,  39.,  36.], dtype=float32),\n  array([315., 632.,  54.,  46.], dtype=float32),\n  array([456., 661.,  41.,  43.], dtype=float32),\n  array([257., 425.,  38.,  31.], dtype=float32),\n  array([256., 272.,  46.,  35.], dtype=float32),\n  array([254., 502.,  30.,  27.], dtype=float32)],\n '0-344': [array([308., 166.,  35.,  32.], dtype=float32)],\n '0-4712': [array([475., 424.,  54.,  50.], dtype=float32),\n  array([268.,   1.,  43.,  37.], dtype=float32)],\n '0-9699': [array([  0., 656.,  72.,  63.], dtype=float32),\n  array([  0., 591.,  47.,  58.], dtype=float32),\n  array([508., 164.,  37.,  32.], dtype=float32),\n  array([938., 582.,  42.,  50.], dtype=float32)],\n '0-4779': [array([ 93., 319., 101.,  61.], dtype=float32),\n  array([  0., 651.,  55.,  68.], dtype=float32)],\n '0-330': [array([320., 179.,  30.,  24.], dtype=float32)],\n '2-6259': [array([503., 458.,  36.,  37.], dtype=float32),\n  array([477., 486.,  35.,  33.], dtype=float32),\n  array([451., 505.,  41.,  39.], dtype=float32)],\n '0-8261': [array([765., 372.,  49.,  41.], dtype=float32)],\n '0-9362': [array([696., 367.,  63.,  55.], dtype=float32),\n  array([651., 140.,  75.,  42.], dtype=float32)],\n '0-4812': [array([627., 104.,  35.,  25.], dtype=float32)],\n '2-6405': [array([ 13., 507.,  45.,  40.], dtype=float32)],\n '2-5750': [array([497., 318.,  52.,  40.], dtype=float32),\n  array([502., 433.,  47.,  42.], dtype=float32),\n  array([579., 435.,  61.,  49.], dtype=float32),\n  array([826., 179.,  45.,  41.], dtype=float32),\n  array([932., 133.,  45.,  35.], dtype=float32),\n  array([907., 189.,  59.,  38.], dtype=float32),\n  array([363., 443.,  51.,  39.], dtype=float32),\n  array([411., 453.,  32.,  22.], dtype=float32),\n  array([747., 198.,  51.,  45.], dtype=float32),\n  array([261., 224.,  53.,  37.], dtype=float32),\n  array([964., 420.,  53.,  47.], dtype=float32),\n  array([535., 464.,  46.,  43.], dtype=float32),\n  array([839., 403.,  56.,  44.], dtype=float32),\n  array([565., 562.,  60.,  49.], dtype=float32),\n  array([579., 487.,  51.,  41.], dtype=float32)],\n '0-50': [array([539., 205., 105.,  98.], dtype=float32),\n  array([630., 351.,  95.,  56.], dtype=float32)],\n '1-4473': [array([636., 381.,  40.,  50.], dtype=float32),\n  array([279.,  63.,  51.,  45.], dtype=float32)],\n '0-12257': [array([102., 672.,  56.,  43.], dtype=float32),\n  array([476., 617.,  43.,  33.], dtype=float32)],\n '2-5727': [array([770.,  71.,  44.,  30.], dtype=float32),\n  array([581., 106.,  44.,  32.], dtype=float32),\n  array([345., 424.,  45.,  42.], dtype=float32),\n  array([587., 274.,  40.,  34.], dtype=float32),\n  array([623., 109.,  25.,  22.], dtype=float32),\n  array([687.,   0.,  45.,  25.], dtype=float32),\n  array([701.,  85.,  37.,  30.], dtype=float32),\n  array([773., 132.,  39.,  32.], dtype=float32),\n  array([779.,  97.,  35.,  25.], dtype=float32)],\n '0-4596': [array([ 99., 144.,  60.,  64.], dtype=float32),\n  array([ 12., 185.,  73.,  58.], dtype=float32),\n  array([502., 297.,  52.,  59.], dtype=float32),\n  array([167.,  65.,  69.,  36.], dtype=float32)],\n '1-4516': [array([279., 421.,  72.,  67.], dtype=float32)],\n '1-5271': [array([548., 184.,  57.,  52.], dtype=float32)],\n '2-6344': [array([290., 109.,  33.,  28.], dtype=float32)],\n '1-8845': [array([492., 275.,  66.,  63.], dtype=float32),\n  array([682., 333.,  55.,  48.], dtype=float32)],\n '1-6878': [array([517., 512.,  71.,  68.], dtype=float32),\n  array([615., 364.,  55.,  51.], dtype=float32),\n  array([669., 299.,  57.,  50.], dtype=float32)],\n '1-6229': [array([563.,  11.,  49.,  45.], dtype=float32)],\n '0-8908': [array([526., 442.,  31.,  29.], dtype=float32)],\n '1-3932': [array([ 18., 350.,  67.,  44.], dtype=float32),\n  array([470., 243.,  30.,  45.], dtype=float32)],\n '1-5884': [array([123., 214.,  45.,  39.], dtype=float32),\n  array([127., 326.,  62.,  51.], dtype=float32)],\n '1-5660': [array([772.,  95.,  27.,  22.], dtype=float32),\n  array([632., 202.,  34.,  29.], dtype=float32),\n  array([421., 310.,  30.,  23.], dtype=float32)],\n '1-6621': [array([669., 476.,  69.,  67.], dtype=float32)],\n '1-9336': [array([563., 130.,  73.,  56.], dtype=float32)],\n '0-1558': [array([ 57., 492.,  48.,  27.], dtype=float32)],\n '0-9252': [array([961., 303.,  40.,  32.], dtype=float32)],\n '1-5896': [array([ 29., 254.,  57.,  37.], dtype=float32),\n  array([ 40., 369.,  70.,  55.], dtype=float32)],\n '1-6612': [array([571., 263.,  54.,  53.], dtype=float32)],\n '1-1920': [array([919., 500.,  33.,  37.], dtype=float32)],\n '0-157': [array([621., 282.,  50.,  54.], dtype=float32)],\n '1-6617': [array([615., 359.,  63.,  62.], dtype=float32)],\n '2-5711': [array([366., 273.,  40.,  36.], dtype=float32),\n  array([324., 292.,  36.,  34.], dtype=float32),\n  array([599., 145.,  28.,  25.], dtype=float32)],\n '0-9353': [array([736., 256.,  61.,  53.], dtype=float32),\n  array([701.,  69.,  61.,  38.], dtype=float32)],\n '0-9496': [array([41., 80., 63., 38.], dtype=float32)],\n '0-12182': [array([434., 211.,  31.,  26.], dtype=float32)],\n '1-5526': [array([186., 602.,  73.,  77.], dtype=float32),\n  array([280., 571.,  51.,  57.], dtype=float32)],\n '1-6885': [array([518., 534.,  71.,  68.], dtype=float32),\n  array([619., 384.,  55.,  51.], dtype=float32),\n  array([675., 317.,  57.,  50.], dtype=float32)],\n '1-1991': [array([956.,  62.,  52.,  58.], dtype=float32)],\n '0-4555': [array([188.,  56.,  50.,  43.], dtype=float32),\n  array([136.,  74.,  46.,  31.], dtype=float32)],\n '1-5829': [array([430.,  72.,  66.,  65.], dtype=float32)],\n '0-9351': [array([744., 231.,  61.,  53.], dtype=float32),\n  array([705.,  50.,  61.,  38.], dtype=float32)],\n '0-9670': [array([313., 661.,  33.,  34.], dtype=float32),\n  array([156., 352.,  59.,  58.], dtype=float32),\n  array([154., 306.,  44.,  43.], dtype=float32),\n  array([ 20., 196.,  61.,  51.], dtype=float32),\n  array([838., 318.,  35.,  33.], dtype=float32)],\n '0-11896': [array([973., 179.,  70.,  63.], dtype=float32)],\n '1-8859': [array([548., 587.,  79.,  78.], dtype=float32),\n  array([769., 635.,  56.,  57.], dtype=float32),\n  array([810.,  12.,  25.,  24.], dtype=float32)],\n '2-5908': [array([574., 544.,  39.,  38.], dtype=float32),\n  array([558., 526.,  36.,  33.], dtype=float32)],\n '2-4718': [array([227., 479.,  42.,  38.], dtype=float32)],\n '0-11909': [array([1032.,  315.,   62.,   63.], dtype=float32)],\n '1-8840': [array([511., 220.,  68.,  65.], dtype=float32),\n  array([682., 269.,  55.,  46.], dtype=float32),\n  array([649.,  39.,  20.,  22.], dtype=float32)],\n '1-9519': [array([395., 590.,  32.,  31.], dtype=float32)],\n '0-967': [array([790., 156.,  43.,  29.], dtype=float32)],\n '1-5274': [array([544., 183.,  57.,  52.], dtype=float32)],\n '1-9292': [array([330., 283.,  45.,  30.], dtype=float32),\n  array([360., 355.,  37.,  38.], dtype=float32),\n  array([174., 693.,  56.,  26.], dtype=float32),\n  array([233., 692.,  36.,  27.], dtype=float32)],\n '1-4506': [array([249., 183.,  63.,  59.], dtype=float32)],\n '1-8892': [array([841., 238.,  40.,  36.], dtype=float32),\n  array([427., 466.,  30.,  29.], dtype=float32)],\n '0-12177': [array([442., 198.,  31.,  26.], dtype=float32)],\n '1-5854': [array([266.,  64.,  54.,  55.], dtype=float32)],\n '1-9269': [array([350., 217.,  39.,  26.], dtype=float32),\n  array([189., 544.,  69.,  51.], dtype=float32),\n  array([255., 549.,  31.,  26.], dtype=float32)],\n '1-9524': [array([397., 658.,  32.,  31.], dtype=float32)],\n '0-9325': [array([818.,  62.,  56.,  45.], dtype=float32)],\n '0-9709': [array([492., 220.,  42.,  35.], dtype=float32)],\n '2-5761': [array([589., 335.,  52.,  46.], dtype=float32),\n  array([599., 458.,  50.,  45.], dtype=float32),\n  array([684., 463.,  66.,  56.], dtype=float32),\n  array([631., 494.,  51.,  52.], dtype=float32),\n  array([940., 152.,  53.,  48.], dtype=float32),\n  array([1068.,   82.,   58.,   47.], dtype=float32),\n  array([1009.,  180.,   73.,   57.], dtype=float32),\n  array([446., 477.,  55.,  46.], dtype=float32),\n  array([485., 489.,  44.,  29.], dtype=float32),\n  array([845., 178.,  62.,  56.], dtype=float32),\n  array([321., 250.,  61.,  47.], dtype=float32),\n  array([1133.,  457.,   62.,   61.], dtype=float32),\n  array([970., 407.,  62.,  52.], dtype=float32),\n  array([682., 641.,  56.,  50.], dtype=float32),\n  array([683., 533.,  67.,  50.], dtype=float32)],\n '0-12271': [array([550., 698.,  44.,  21.], dtype=float32),\n  array([750., 368.,  28.,  22.], dtype=float32)],\n '0-12293': [array([910., 455.,  31.,  25.], dtype=float32)],\n '0-102': [array([263., 680., 116.,  39.], dtype=float32),\n  array([640.,  50.,  22.,  20.], dtype=float32)],\n '1-9322': [array([616., 538.,  41.,  46.], dtype=float32),\n  array([303., 582.,  56.,  40.], dtype=float32),\n  array([335., 671.,  47.,  48.], dtype=float32)],\n '1-476': [array([854., 484.,  32.,  38.], dtype=float32)],\n '0-9711': [array([489., 232.,  43.,  35.], dtype=float32)],\n '2-5939': [array([251., 446.,  28.,  29.], dtype=float32),\n  array([276., 461.,  29.,  32.], dtype=float32)],\n '1-9188': [array([440., 410.,  51.,  49.], dtype=float32),\n  array([108., 592.,  80.,  57.], dtype=float32),\n  array([ 41., 632.,  42.,  41.], dtype=float32),\n  array([385., 380.,  42.,  35.], dtype=float32),\n  array([491., 412.,  36.,  39.], dtype=float32),\n  array([319., 269.,  31.,  26.], dtype=float32),\n  array([315., 143.,  42.,  32.], dtype=float32)],\n '1-4085': [array([534.,  75.,  20.,  19.], dtype=float32)],\n '1-8865': [array([526., 675.,  81.,  64.], dtype=float32),\n  array([802.,  25.,  30.,  29.], dtype=float32)],\n '0-949': [array([764.,   9.,  40.,  25.], dtype=float32)],\n '1-463': [array([817., 309.,  27.,  24.], dtype=float32)],\n '0-9618': [array([351., 340.,  19.,  16.], dtype=float32),\n  array([235., 224.,  44.,  29.], dtype=float32)],\n '1-6877': [array([516., 511.,  71.,  68.], dtype=float32),\n  array([614., 363.,  55.,  51.], dtype=float32),\n  array([667., 299.,  57.,  50.], dtype=float32)],\n '0-12184': [array([419., 214.,  34.,  31.], dtype=float32)],\n '0-351': [array([277., 202.,  37.,  33.], dtype=float32)],\n '2-5726': [array([774.,  55.,  44.,  30.], dtype=float32),\n  array([587.,  86.,  44.,  32.], dtype=float32),\n  array([353., 406.,  45.,  42.], dtype=float32),\n  array([593., 256.,  40.,  34.], dtype=float32),\n  array([629.,  91.,  25.,  22.], dtype=float32),\n  array([708.,  67.,  37.,  30.], dtype=float32),\n  array([777., 119.,  38.,  31.], dtype=float32),\n  array([784.,  80.,  35.,  25.], dtype=float32)],\n '2-5847': [array([770., 234.,  50.,  39.], dtype=float32)],\n '1-5540': [array([231., 582.,  64.,  54.], dtype=float32),\n  array([315., 537.,  51.,  57.], dtype=float32),\n  array([  0., 474.,  32.,  49.], dtype=float32)],\n '0-12310': [array([1014.,  592.,   41.,   33.], dtype=float32)],\n '1-9105': [array([637., 228.,  38.,  37.], dtype=float32),\n  array([898., 390.,  55.,  47.], dtype=float32),\n  array([849., 319.,  49.,  44.], dtype=float32),\n  array([748., 543.,  57.,  55.], dtype=float32),\n  array([627., 555.,  57.,  55.], dtype=float32),\n  array([414.,  92.,  46.,  48.], dtype=float32),\n  array([690.,  71.,  38.,  39.], dtype=float32),\n  array([831.,  65.,  56.,  50.], dtype=float32),\n  array([549.,  63.,  26.,  25.], dtype=float32),\n  array([375.,  28.,  33.,  25.], dtype=float32),\n  array([688., 610.,  46.,  49.], dtype=float32),\n  array([655., 627.,  60.,  59.], dtype=float32),\n  array([426., 227.,  27.,  26.], dtype=float32),\n  array([656., 256.,  27.,  42.], dtype=float32),\n  array([206., 690.,  42.,  39.], dtype=float32),\n  array([1103.,  545.,   54.,   44.], dtype=float32),\n  array([1117.,  530.,   61.,   33.], dtype=float32)],\n ...}"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "train_dict,valid_dict = train_test_split(list(dictionary.items()),\n",
    "                                         train_size=TRAIN_SPLIT)\n",
    "train_dict = dict(train_dict)\n",
    "valid_dict = dict(valid_dict)\n",
    "\n",
    "train_dict"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "%%time\n",
    "\n",
    "\n",
    "backbone = build_backbone(IMAGE_SHAPE,N_LAYERS)\n",
    "ssd_model = build_ssd(IMAGE_SHAPE,backbone,N_LAYERS,N_CLASSES)\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}